
22.08.2008, 03:48
|
|
Познавший АНТИЧАТ
Регистрация: 01.04.2007
Сообщений: 1,268
С нами:
10058786
Репутация:
4589
|
|
Сообщение от Isis
eLWAux, мда)
.:EnoT:., прочитай статью "Роковые ошибки PHP" не помню какую часть.. про is_numeric
C is_numeric как раз все впорядке)
[ intval(), (int) ]
У intval() есть интересная особенность - она возвращает TRUE если первой в аргументе содержится хотя бы одна цифра.
И у разработчиков тоже есть интересная особенность =)) -- они периодически используют intval()/(int) в логичесих условиях,
допуская непростительные ошибки.
Ведь наличие цифр в строке вовсе не гарантирует отсутствие других символов.
Пример:
/index.php?id=1'"qwerty
PHP код:
$id=$_GET['id'];
if(intval($id) && (int)$id)
{
sql_query("select $id from table_name");
}
else die('Id not integer!');
Несмотря на кажущуюся незначительность баги, встречается она в диком тырнете достаточно регулярно.
Для безопасного сравнения используйте is_numeric()
|
|
|