Витяй пишет:Если речь идет о ломании скрипта "левыми" даными, тогда придется каждый входящий бит проверять, сам понимаешь что это значит. Хотя можно ещё через ОП (объектное программирование) сделать, но это сложно.
Входящие данные надо проверять в любом случае. И какой стиль программирования ты используешь -- не важно: с одинаковой легкостью ломаются как классы, так и функции.
Подумал о том, что здесь тебя могуть сломать - значит защитился. Не подумал -- сломают. Лучше лишний раз перестраховаться.
Это уже везде написано
if ( !isset( $_GET["action"] ) ...
if ( !in_array( $_GET["action"[, $actions ) ) ...
Про попытку передачи через GET порядок сортировки записей в БД -- вообще молчу: попадаются еще такие
echo "< a hreh='index.php?action=getctg&sort=ASC'>Сортировать< /a>";
Всегда проверяй -- передан ли параметр ( GET или POST )? который ты ожидаешь
if( isset ( ... ) ) ...
и имеет ли это параметр то значение, которое ты ожидаешь?
if ( !in_array( $_GET("action"), $actions ) ) ...
И жизнь станет проще...
Никаких данных не должно идти на вход скрипта, если ты не уверен в их достоверности. Пользователь передал тебе e-mail? О.К.:
PHP:
скопировать код в буфер обмена
$error = ''; // урезаем входные данные, даже на задумываясь -- до длины, указанной в параметре maxlength тега input $email = substr( $_POST["email"], 0 , 30 ); if ( !preg_match( "#^[0-9a-z_-.]+@[0-9a-z-.]+.[a-z]{2,6}$#i" , $email ) ) error = $error.'<li>Некорректный e-mail</li>';
И так -- для каждой позиции.
И вот когда ты будешь точно уверен, что входные данные -- это именно те данные, котрые ты ждешь, можно спокойно работать...
Самое смешное, что в 99 случаев из 100 -- тебе даже не надо задумываться над такими вопросами. Если у тебя register_globals=Off интерпретатор PHP сам выдаст сообщение об ошибке -- типа, попытка использовать неопределенную переменную, или неопределенный индекс массива $_GET
|