| Безопасность интернет-приложений |
|
|
| Автор Westry | |
| 04.02.2008 г. | |
|
Собственно, это статья о трех больших проблемах в безопасности подавляющего числа "самодельных" скриптов.
1. Возможность sql-injection. Внимательно изучите этот кусок кода (php): <? $conn = mysql_connect("localhost", "zz", "zz"); $sql = "select adminpwd from data where login='$login' "; ... Допустим, скрипт называется script.php и параметр login передается ему в виде script.php?login=ssss . Вы видите, что параметр login никак не проверяется. А что будет, если вместо login=admin передать login='admin ? Будет ошибка sql-запроса, ведь к базе данных передается запрос select adminpwd from data where login=''admin' . В такой ситуации злоумышленник может исполнить любой sql-запрос (использовав, например union). Защита от этого предельно проста: использовать функцию 2. Возможность исполнения произвольной команды. Необходимо всегда проверять включаемые файлы, особенно не рекомендуется использовать include($inc), если переменная $inc передается через адресную строку. 3. Возможность переопределения переменных. Возьмем такой пример: <? ... ?> Допустим, что $f в конце цикла содержит какую-нибудь важную информацию из файла. Или, что еще хуже, она исполняется командой cmd($f); Так как переменная $f не определена в начале скрипта (должно быть $f="";), то ее начальное значение может определить пользователь (введя в адресной строке что-нибудь вроде script.php?f=ddddd). В зависимости от важности переменной $f будет варьироваться вред, который сможет причинить злоумышленник. Если, конечно, он угадает название переменной и ее значение.
|
| « Пред. | След. » |
|---|


