![]() |
фильтрация данных на пхп
Скрипт работает с mysql. Ему передаются данные типа ников, затем другой скрипт их выводит, т.е. обрезать все спецсимволы нельзя. + нужна поддержка кириллицы. У меня есть два варианта.
1. htmlspecialchars + strip_tags + регулярка (как задать кириллицу? [а-яА-я]?). Тогда какие спецсимволы нужно фильтровать? Я думаю, в самих скриптах не может быть inj, т.к. там используется только insert и select(парамерты жестко заданы), но интересен сам способ. 2. Перед записью конвертить все через ord, а перед выводом chr. Для защиты от xss достаточно htmlspecialchars() или нужно что-то еще? |
Цитата:
|
Ога Макро прав htmlspecialchars() хватит
|
Зависит всё же от того, где они выводятся.
Кодировку нужно указать в явном виде против Utf-7 |
$var = htmlspecialchars($var);
$var = ereg_replace("((\'\")+)", "", $var); так? Цитата:
Где указать кодировку? |
Можно проще.
PHP код:
|
Охохо...если вы думаете что htmlspecialchars спасает от всего, то вы горекодеры...
|
Цитата:
|
ну на сколько я знаю htmlspecialchars спасает от скулей и икссс
|
а я ничего не знаю =\
|
вобщем ты получил ответ на свой вопрос,если что пусть Исис расскажет что оон хотел сказать...)
|
Цитата:
|
Указать кодировку в мета-тэге, например:
Код:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">Цитата:
- в тэге <title>, - в тэгах <div>, <span>, и т.д, - в тэгах <style>, <script> (omg), - в названии атрибута тэга, - в значении атрибута тэга. От этого зависят правила фильтрации. |
Цитата:
Цитата:
с кавычками так? PHP код:
|
Цитата:
|
непохекает,мы его подкупим))
|
Цитата:
|
лично я против xss использую не только htmlspecialchars() но и stripslashes()
а против sql-inj PHP код:
|
Цитата:
И никаких sql inj и xss быть не может |
Цитата:
PHP код:
при Код:
id=-1 union select hek_name,hek_password,hek_mail from hek_users |
Цитата:
|
Цитата:
а если выборку по id делать то можно intval() применить :) |
может лучше вместо stripslashes(); $var = str_replace("\\", "", $var); ?
тоха, мне нужны не числовые параметры. а для числовых, конечно, intval() + проверка на знак =) |
чтониб вроде..
PHP код:
ну еще в довесок можно проверять на a-zA-Z0-9, хотя в идеале хватит только его. если точно знаешь что другого не будет в строке |
blackybr зачем добавлять одинарные кавычки, если параметр is_numeric?
|
если не число, то mysql_real_escape_strin и добавляем кавычки чтобы в запрос передать в кавычках уже строку) хотя прав, не обязательно, но почему бы и нет
|
htmlspecialchars спасёт от XSS
PHP код:
PHP код:
PHP код:
PHP код:
|
Не надо заморачиваться , все предельно просто . Все передаваемые значения должны быть в ковычках , это сразу спасает от 99 процентов проблем да и mysql проглотит этот запрос быстрее , прежде чем применить |
Ну и ну, ребята. Столько сообщений, и нет ни одного грамотного ответа. Надо бы подождать nerezus'а, он знает ответ. Если ждать его лень (новый год как никак), бегом искать его статью о защите от "SQL инъекций". Там есть ответ на вопрос, который мучает здесь вас всех, а именно:
"Как защитить любое веб приложение от любой атаки, отличной от атаки грубой силой?" Ни много ни мало. Формулировку вам придется натянуть на его "статью" самостоятельно. Кстати, любой (даже низкой степени заинтересованности) студент любого ВУЗа любого IT факультета знает ответ на этот вопрос! Задумайтесь об этом, задумайтесь о том, чему вы научились, столько времени потратив на прочтение этого форума!? Отдельная просьба Зеленому Мишке и всем прочим модераторам, хотя бы в честь Нового Года не трогать это сообщение, тем более, что в действительности, это первый ответ в этой теме, все остальное можно удалить! |
О, ты вернулся :d
|
intval(), mysql_escape_string()
=\ |
как я понял, прочитав http://forum.antichat.ru/thread30641.html
при вводе (+заключаем в кавычки). 1. если число, intval(); 2. если строка, mysql_escape_string(); +заключаем в кавычки. 3. при выводе htmlspecialchars(); все? PHP код:
PHP код:
|
Цитата:
|
Цитата:
Цитата:
Цитата:
|
PHP код:
Не забываем про фокус замены символа пробела на PHP код:
По возможности использовать HttpOnly-cookies. Параноикам поможет шифрование cookie. При нападение с помощью TRACE метода претензии к хостеру. PHP код:
|
Да что вы тут развели дискуссию? Все повторяют сообщения, которые тут уже написаны. Для проверки любых данных на 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('неверный файл'); На все вопросы автора ответили уже :) |
Цитата:
|
| Время: 20:41 |