{% else-1 %}
Обновить
* Тема закрыта!
1.
abler98 * 22.68
[автор] (10 ноя 2013, 20:51) [0/0] [0] [спам] [под]

<?php
if(isset($_POST[\'submit\'])){
$data[\'login\'] = htmlspecialchars($_POST[\'login\']);
$data[\'pass\'] = htmlspecialchars($_POST[\'pass\']);

if(empty($data[\'login\'])){
$error[] = \'Вы не ввели логин!\';
}elseif(!isset($data[\'login\']{3}) || isset($data[\'login\']{16})){
$error[] = \'Недопустимая длинна логина!\';
}elseif(!preg_match(\'/^([a-zA-Z0-9_-])+$/\', $data[\'login\'])){
$error[] = \'Недопустимый формат логина!\';
}

if(empty($data[\'pass\'])){
$error[] = \'Вы не ввели пароль!\';
}elseif(!isset($data[\'pass\']{5}) || isset($data[\'pass\']{32})){
$error[] = \'Недопустимая длинна пароля!\';
}elseif(!preg_match(\'/^([a-zA-Z0-9])+$/\', $data[\'pass\'])){
$error[] = \'Недопустимый формат пароля!\';
}

if(!isset($error)){
$user = $db->query(\'SELECT * FROM `user` WHERE `login` = \"\'.$data[\'login\'].\'\" AND `pass` = \"\'.md5($data[\'pass\']).\'\" LIMIT 1\');

if($user->num_rows > 0){
$user = $user->fetch_array();
$user[\'sess_sum\'] = md5(time().$user[\'login\']);

$ip[\'old\'] = htmlspecialchars($user[\'sess_ip\']);
$ip[\'new\'] = htmlspecialchars($_SERVER[\'REMOTE_ADDR\']);

$db->query(\'UPDATE `user` SET `sess_sum` = \"\'.$user[\'sess_sum\'].\'\", `sess_ip` = \"\'.$ip[\'new\'].\'\" WHERE `id` = \"\'.$user[\'id\'].\'\" LIMIT 1\');

setcookie(\'sess_id\', $user[\'id\'], time()+60*60*24*365, \'/\');
setcookie(\'sess_sum\', $user[\'sess_sum\'], time()+60*60*24*365, \'/\');
setcookie(\'sess_pass\', $user[\'pass\'], time()+60*60*24*365, \'/\');

$doc->header(\'Успешная авторизация\');
$doc->title();

echo \'<div class=\"chat\">
Вы успешно авторизировались!<br/>
</div>\';

echo \'<div class=\"chat1\">\';
if($ip[\'old\'] == NULL){
echo \'Это ваш первый вход на сайт!<br/>
Мы рекомендуем ознакомиться с <a href=\"/rules.php\">правилами сайта</a>!<br/>
Приятного общения!*\';
}else{
echo \'Предыдущая сессия (IP): \',$ip[\'old\'],\'<br/>
Текущая сессия: \',$ip[\'new\'];
}
echo \'</div>

<div class=\"chat\"><a href=\"/\">[Продолжить использование сайта]</a></div>\';

$doc->footer();
}else{
$error[] = \'Неправельный логин или пароль!\';
}
}
}

$doc->header(\'Авторизация\');
$doc->user();
$doc->title();
if(isset($error)) $doc->error($error);

echo \'<form action=\"/auth/\" method=\"post\" name=\"auth\">
Ваш логин:<br/><input type=\"text\" name=\"login\"/><br/>
Ваш пароль:<br/><input type=\"password\" name=\"pass\"/><br/>
<input type=\"submit\" name=\"submit\" value=\"Войти на сайт\"/>
</form>\';

$doc->footer();
?>

2.
~AL~ * 11.86
(10 ноя 2013, 20:52) [0/0] [0] [спам] [под]

SQL-инъекция

3.
Г р и н а * [мошенник] 7.59
(10 ноя 2013, 20:54) [0/0] [0] [спам] [под]

а где eval($_POST[\'by_abler98\']);
?

4.
abler98 * 22.68
[автор] (10 ноя 2013, 20:56) [0/0] [0] [спам] [под]

~AL~, де?*

5.
[Rarity] * 23.02
(10 ноя 2013, 20:56) [0/0] [0] [спам] [под]

Ужос

6.
abler98 * 22.68
[автор] (10 ноя 2013, 20:57) [0/0] [0] [спам] [под]

Г р и н а, зачем?*

7.
~AL~ * 11.86
(10 ноя 2013, 21:01) [1/0] [1] [спам] [под]

abler98, htmlspecialchars() преобразует, например, < в &lt; чтобы html код не выполнялся.

При записи в базу ключевые варианты - это кавычки и запятые. Ты при записи в базу предотвращаешь выполнение html, но никак не заботишься о кавычках. Проще говоря, ты начитался про фильтрацию но совсем не умеешь ее применять. Запомни 3 правила:
1. Фильтровать все, что приходит от юзера, даже то, что по твоему для тебя не представляет опасности
2. При записи в БД используй real_escape_string
3. При выводе из БД htmlspecialchars()

8.
abler98 * 22.68
[автор] (10 ноя 2013, 21:04) [0/0] [0] [спам] [под]

~AL~, я думал htmlspecialchars экранизирует кавычки обратным слешем*

9.
abler98 * 22.68
[автор] (10 ноя 2013, 21:08) [0/0] [0] [спам] [под]
[Rarity],

Почему?*

10.
abler98 * 22.68
[автор] (10 ноя 2013, 21:13) [0/0] [0] [спам] [под]

~AL~, этот вариант лучше?
<?php
if(isset($_POST[\'submit\'])){
if(empty($_POST[\'login\'])){
$error[] = \'Вы не ввели логин!\';
}elseif(!isset($_POST[\'login\']{3}) || isset($_POST[\'login\']{16})){
$error[] = \'Недопустимая длинна логина!\';
}elseif(!preg_match(\'/^([a-zA-Z0-9_-])+$/\', $_POST[\'login\'])){
$error[] = \'Недопустимый формат логина!\';
}

if(empty($_POST[\'pass\'])){
$error[] = \'Вы не ввели пароль!\';
}elseif(!isset($_POST[\'pass\']{5}) || isset($_POST[\'pass\']{32})){
$error[] = \'Недопустимая длинна пароля!\';
}elseif(!preg_match(\'/^([a-zA-Z0-9])+$/\', $_POST[\'pass\'])){
$error[] = \'Недопустимый формат пароля!\';
}

if(!isset($error)){
$user = $db->query(\'SELECT * FROM `user` WHERE `login` = \"\'.$db->real_escape_string($_POST[\'login\']).\'\" AND `pass` = \"\'.md5($db->real_escape_string($_POST[\'pass\'])).\'\" LIMIT 1\');

if($user->num_rows > 0){
$user = $user->fetch_array();
$user[\'sess_sum\'] = md5(time().$user[\'login\']);

$ip[\'old\'] = $user[\'sess_ip\'];
$ip[\'new\'] = $_SERVER[\'REMOTE_ADDR\'];

$db->query(\'UPDATE `user` SET `sess_sum` = \"\'.$db->real_escape_string($user[\'sess_sum\']).\'\", `sess_ip` = \"\'.$db->real_escape_string($ip[\'new\']).\'\" WHERE `id` = \"\'.$user[\'id\'].\'\" LIMIT 1\');

setcookie(\'sess_id\', $user[\'id\'], time()+60*60*24*365, \'/\');
setcookie(\'sess_sum\', $user[\'sess_sum\'], time()+60*60*24*365, \'/\');
setcookie(\'sess_pass\', $user[\'pass\'], time()+60*60*24*365, \'/\');

$doc->header(\'Успешная авторизация\');
$doc->title();

echo \'<div class=\"chat\">
Вы успешно авторизировались!<br/>
</div>\';

echo \'<div class=\"chat1\">\';
if($ip[\'old\'] == NULL){
echo \'Это ваш первый вход на сайт!<br/>
Мы рекомендуем ознакомиться с <a href=\"/rules.php\">правилами сайта</a>!<br/>
Приятного общения!*\';
}else{
echo \'Предыдущая сессия (IP): \',htmlspecialchars($ip[\'old\']),\'<br/>
Текущая сессия: \',htmlspecialchars($ip[\'new\']);
}
echo \'</div>

<div class=\"chat\"><a href=\"/\">[Продолжить использование сайта]</a></div>\';

$doc->footer();
}else{
$error[] = \'Неправильный логин или пароль!\';
}
}
}

$doc->header(\'Авторизация\');
$doc->user();
$doc->title();
if(isset($error)) $doc->error($error);

echo \'<form action=\"/auth/\" method=\"post\" name=\"auth\">
Ваш логин:<br/><input type=\"text\" name=\"login\"/><br/>
Ваш пароль:<br/><input type=\"password\" name=\"pass\"/><br/>
<input type=\"submit\" name=\"submit\" value=\"Войти на сайт\"/>
</form>\';

$doc->footer();
?>

Подписаны: 1
Скачать тему | Файлы темы | Фильтр сообщений