 |
|

02.01.2008, 03:15
|
|
Leaders of Antichat - Level 4
Регистрация: 16.01.2006
Сообщений: 1,966
С нами:
10692266
Репутация:
3486
|
|
intval(), mysql_escape_string()
=\
|
|
|

02.01.2008, 04:00
|
|
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
С нами:
10393869
Репутация:
2032
|
|
как я понял, прочитав http://forum.antichat.ru/thread30641.html
при вводе (+заключаем в кавычки).
1. если число, intval();
2. если строка, mysql_escape_string();
+заключаем в кавычки.
3. при выводе htmlspecialchars();
все?
PHP код:
INSERT INTO table (login, pass) VALUES ('".$_POST."','".$_POST."');
PHP код:
SELECT pass FROM table WHERE login '".$_POST."';
если кавычки (') стоят в самом запросе, то можно вообще ничего не экранировать?
Последний раз редактировалось Piflit; 02.01.2008 в 04:09..
|
|
|

02.01.2008, 04:08
|
|
Leaders of Antichat - Level 4
Регистрация: 16.01.2006
Сообщений: 1,966
С нами:
10692266
Репутация:
3486
|
|
1. если число, intval();
2. если строка, mysql_escape_string();
Третий пункт выкидываай из своего понимания. Проверка на существование (isset()) и выборка целого числа в первом случае (если кто то пихает херню с -, то можно добавить bcmod()), во втором случае окружение кавычками и экранирование.
|
|
|

02.01.2008, 04:15
|
|
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
С нами:
10393869
Репутация:
2032
|
|
Сообщение от .Slip
Третий пункт выкидываай из своего понимания.
почему? а <скрипт> итп при выводе?
Сообщение от .Slip
Проверка на существование (isset()).
на существование чего? не понял.
Сообщение от .Slip
во втором случае окружение кавычками и экранирование.
что еще нужно экранировать после mysql_escape_string();?
|
|
|

02.01.2008, 04:43
|
|
Administrator
Регистрация: 12.10.2006
Сообщений: 466
С нами:
10304966
Репутация:
5170
|
|
Так же смотри не происходить ли автоматическое преобразование символов.
Не забываем про фокус замены символа пробела на
Надежней пропускать только то что разрешено, чем блокировать "черные списки".
По возможности использовать HttpOnly-cookies. Параноикам поможет шифрование cookie.
При нападение с помощью TRACE метода претензии к хостеру.
|
|
|

02.01.2008, 10:17
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 595
С нами:
10261766
Репутация:
1079
|
|
Да что вы тут развели дискуссию? Все повторяют сообщения, которые тут уже написаны. Для проверки любых данных на sql инъекцию, xss или инклуд,
способов не так уж и много!
Для проверки sql строк достаточно mysql_real_escape_string()
Все числовые параметры sql стоит писать через intval()
Для защиты от xss вполне хватит функции htmlspecialchars() либо htmlentities()
Проверка на кириллицу вот - $str=preg_replace('/[^а-я]/i','',$str);
Если нужна проверка на инклуд.
Во первых, инклудить лучше файлы с префиксом, например
include('./inc/inc_'.$_GET['page']);
Во вторых, лучше приписывать расширение к файлу и желательно, чтобы это расширение не было '.php' .
include('./inc/inc_'.$_GET['page'].'.inc');
В третьих, существование файла надо проверять и фильтровать точки  .
$_GET['page']=str_replace('.','',$_GET['page']);
file_exists('./inc/inc_'.$_GET['page'].'.inc')?include('./inc/inc_'.$_GET['page'].'.inc'):echo('неверный файл');
На все вопросы автора ответили уже 
Последний раз редактировалось Macro; 02.01.2008 в 10:27..
|
|
|

02.01.2008, 13:51
|
|
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
С нами:
11058146
Репутация:
4536
|
|
$_GET['page']=str_replace('.','',$_GET['page']);
наверное правильнее регуляркой проверять на допустимые символы, чем вырезать все недопустимые, так ведь?
|
|
|
|
 |
|
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|