|
|
|
| Обьясните пожалуйста код из статьи "безопасное програмирование". Что такое list, и почему не стоит проверять на возвращение строки? Заранее спасибо.
1. Не используйте проверку на возращение строки (mysql_num_rows()), а применяйте следующий подход:
<?php
$user = $_POST['user'];
$pass = $_POST['pass'];
$sql = "SELECT user, pass FROM users WHERE user = '$user'";
list($m_user, $m_pass) = mysql_fetch_row( mysql_query($sql) );
if ( $pass != $m_pass or // даст TRUE, если пароли не равны
$user != $m_user // данная проверка даст TRUE, если была sql инъекция
)
{
die("die");
}
?>
|
| |
|
|
|
|
|
|
|
для: Евгений Петров
(23.06.2005 в 15:50)
| | list() - это конструкция, которая позволяет разбить массив на переменные
<?php
list($first, $second, $third) = array("first", "second", "third");
echo $first."<br>"; // first
echo $second."<br>"; // second
echo $third."<br>"; // third
?>
|
Функцию mysql_num_rows() лучше не использовать, так как при помощи ряда ухищрений, передав через переменную $user элемент SQL-запроса, можно его видоизменить таким образом, что он всегда будет возвращать хотя бы одну строку. Поэтому логин и пароль лучше проверять явно. | |
|
|
|