PDA

Просмотр полной версии : фильтрация данных на php


DWORD
02.01.2008, 14:01
Ответ в соседнюю, почему-то снова закрытую тему.


Для защиты от xss вполне хватит функции htmlspecialchars() либо htmlentities()
Нет, это демагогия. В общем случае, для защиты от XSS как минимум придется довольно долго искать особенности HTML/JS парсеров конкретных браузеров, потому что все остальное - это не защита от XSS, а отказ от предоставления услуг пользователю, ввиду не знания того, как от него защититься. И Точка.
Проверка на кириллицу вот - $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('неверный файл');
На все вопросы автора ответили уже :)
Это все не так. Технику защиты от PHP-инъекций вы тут грамотно не раскрыли. Хотя ответы действительно на все уже даны, только вот не в этой теме.

как я понял, прочитав http://forum.antichat.ru/thread30641.html
при вводе (+заключаем в кавычки).
1. если число, intval();
2. если строка, mysql_escape_string();
+заключаем в кавычки.
3. при выводе htmlspecialchars();
все?



Самый главный вывод, который следует из той статьи звучит так:

Любое веб приложение можно защитить от любой атаки, отличной от атаки грубой силой, если писать его, зная язык программирования, на котором ты его пишешь и протоколы, по которым общается твое приложение с сервером и клиентом.

Все. Это необходимое и достаточное условие. Видите ли, "SQL-инъекции", "PHP-инъекции", "XSS" не есть область информационной безопасности. Все эти проблемы исчезают ровно тогда, когда человек перестает быть студентом/самоучкой и становится программистом. У него уже рука просто-напросто не повернется написать код с широко известными вам всем дырами, потому что это элементарные вещи, вы все здесь играете в детский сад. Но вас так много, что вам кажется, что это нормально. Это ненормально. Все уязвимости, которые вы рассматриваете, в строгом смысле уязвимостями называть нельзя. Просто код с такими уязвимостями написан человеком, который не владеет стандартами, которыми пытается оперировать, а значит программистом считаться и не может.

NOmeR1
02.01.2008, 15:16
Раз уж ты всё знаешь, приведи свои примеры защиты.

DWORD
02.01.2008, 15:26
Раз уж ты всё знаешь, приведи свои примеры защиты.
Эта фраза говорит о том, что ты не понял о чем идет речь. Нет никаких примеров защиты. Есть примеры функциональных программ, предоставляющих пользователю некоторые интерактивные возможности. Грамотность написания таких программ предполагает его "защиту" как неотъемлемую часть. Такие приложения у меня есть, но их код закрыт для широкой общественности, так что, к сожалению, помочь вам могу лишь наводящими фразами, ваша же задача понять о чем идет речь, это не так сложно.

ZaCo
02.01.2008, 15:31
Любое веб приложение можно защитить от любой атаки, отличной от атаки грубой силой, если писать его, зная язык программирования, на котором ты его пишешь и протоколы, по которым общается твое приложение с сервером и клиентом.

+технологии используемые приложением

2NOmeR1 методики защиты скриптов для большинства пхп-программ вполне стандартные, но конкретны для каждой задачи. задача обеспечения безопасности естественно сводиться к задаче наложения определенных ограничений, делающих недоступным нежелаемое поведение пользователя-потенциального взломщика. ну, а задача наложений ограничений сводится к нескольким требованиям описанных DWORD'ом, не ясно какие могут быть вопросы? скажу одно - если возникают противоречивые требования ограничений, то проблема, очевидно, в самом проектировании приложения. если вам необходимо обрабатывать комментарии не как бб-теги, не как плайн-текст, а, например, как в жж, то совет об использовании htmlspecialchars отпадает - необходимо использовать встроенную технологию поиска\замены регулярных выражений, в каких-то ситуациях непосредственный и ручной парсинг - конечные автоматы и тп все за вас никто писать не будет: во-первых, есть готовые решения, во-вторых, никто не знает, что вам именно нужно.

Isis
02.01.2008, 15:34
http://www.php.net
Closed

nerezus
02.01.2008, 16:13
Isis, ты надоел. Данная тема требует, кстати, детального рассмотрения.

_Great_
10.01.2008, 00:42
+технологии используемые приложением
+ реализацию языка. и все. вообщем-то этого достаточно.

ZaCo, DWORD +1

Digimortal
10.01.2008, 02:01
>> Любое веб приложение можно защитить от любой атаки, отличной от атаки грубой силой, если писать его, зная язык программирования, на котором ты его пишешь и протоколы, по которым общается твое приложение с сервером и клиентом.

ты как то все очень идеализируешь.. в том смысле, что утверждаешь, что можно создать идеальное с точки зрения безопасности веб-приложение любой сложности.. в теории, это может и возможно, но на практике на 100% это никогда недостижимо..
по такой простой причине, как ограниченность ресурсов при реализации любой задачи, будь то создание веб-приложения или чего-угодно еще..


>> Такие приложения у меня есть, но их код закрыт для широкой общественности

смелое утверждение.. ) обычно какую-либо разработку можно считать безопасной как раз только после того как она будет изучена широкой общественностью и пройдет проверку временем..

astrologer
10.01.2008, 03:36
Любое веб приложение можно защитить от любой атаки, отличной от атаки грубой силой,
если писать его, зная язык программирования, на котором ты его пишешь и протоколы,
по которым общается твое приложение с сервером и клиентом.
Все. Это необходимое и достаточное условие.+ Технологии, используемые приложением.
+ Реализацию языка. И всё. В общем-то, этого достаточно.Пример: некто пишет веб-приложение, зная только php, html и http;
И получает XSS-уязвимость, хотя "необходимое и достаточное условие" было соблюдено.

С остальным согласен.

n-000
10.01.2008, 05:05
На мой взгляд безопасность состоит не только в грамотно написаном приложении, но и от других факторов ... например правильном конфиге сервера . Ведь может получиться так что программер создал скрипт, а танкист админ неучёл всех нюансов ...
А человечиский фактор это распространнёная уязвимость -)

Scipio
10.01.2008, 05:09
Так в том то и дело, что "программер" должен учитывать все ньансы (по мере возможности),в том числе и админа танкиста

Macro
10.01.2008, 08:13
Dword, ты меня потряс собственной ограниченностью. Извини, если обидел.
В данном случае мой код может быть и не идеален, но я на это и не претендую, зато я гарантирую, что те коды, которые я выкладываю - устойчивы к взлому. Единственное, что ты делаешь - это заявляешь, что все - говно. Т.е. просто кормишь свое самолюбие. Ну-ну, продолжай в том же духе. Я еще ни разу не видел ни одного полезного сообщения от тебя. Ты пишешь исходя из какой-то виртуально созданной тобой объективности, в то время как для всех остальных существует лишь конкретный контекст, данный случай это показывает. В теме я писал свой код как помощь и ответ автору на поставленные вопросы. С этой задачей я справился вполне успешно. Код, написанный с использованием моих идей был бы неуязвим, в этом я уверен. Надеюсь, что был убедителен.