Метод проверки входящих данных

Nikoshka

Новичок
Метод проверки входящих данных

Вот такой вот скриптик написал, которые проверяет входящие данные:

PHP:
foreach($_GET as $key=>$value){
$$key = addslashes($$key);
$$key = htmlspecialchars($$key);}

foreach($_POST as $key=>$value){
$$key = addslashes($$key);
$$key = htmlspecialchars($$key);}
Т.е. он просто перебирает ПОСТ и ГЕТ на наличие скриптов и прослэшивает их. Собственно вопрос, какие еще проверки актуальны? Как можно доработать скрипт т.к. хочу написать ф-ю в которую просто одается POST и GET и в итоге она вызывается где надо.
 

Nikoshka

Новичок
SiMM
У меня хостер, так что дерективы я включать немогу сам.
 

Фанат

oncle terrible
Команда форума
он перебирает ПОСТ и ГЕТ на наличие скриптов
чего-чего наличие он перебирает? каких ещё скриптов?
можно осветить этот вопрос поподробнее?
какие еще проверки актуальны
это зависит от того, что и зачем ты хочешь проверять.
 

Nikoshka

Новичок
Фанат

>>$$key = htmlspecialchars($$key);
Если скрипт послан в запросе, то как рабочий он не дойдет.

>>это зависит от того, что и зачем ты хочешь проверять.
Одна универсальная проверка. Ваш опыт програмирования никаких вариантов не предусматриват?
 

Фанат

oncle terrible
Команда форума
нет.
наш опыт программирования не предусматриват никакой универсальной проверки.
равно, как наш опыт едока не предусматривает универсального столового прибора. В каких-то случаях я ем ложкой, в каких-то - вилкой, а иногда даже пользуюсь ножом.
А ты, видимо, в своём стремлении к унификации, хаваешь всё ложкой. И ей же чай размешиваешь. После супа.

>>$$key = htmlspecialchars($$key);
Если скрипт послан в запросе, то как рабочий он не дойдет.
ты, кажется, упоминал слово "прослешивать".
Имне очень интересно, как прослешивание влияет на скрипты.
 

Nikoshka

Новичок
А ты, видимо, в своём стремлении к унификации, хаваешь всё ложкой. И ей же чай размешиваешь. После супа.
Вам бы вежливости поучиться и логике (особо). Я спрашиваю список столовых приборов. Или Фанат репертуар никогда не меняет?

Имне очень интересно, как прослешивание влияет на скрипты.
Никак, это для записи в базу.
 

denver

?>Скриптер
Nikoshka
Нормальные люди не изменяют данные которые пришли.
htmlspecialchars() делают непосредственно при выводе значения в HTML код. Все скрипты исполняются только в нём, их исполняет браузер! На неэкранированные кавычки ему наплевать.

А addslashes() при выводе значения в SQL код. Все инъекции фатальны только в нём, на них спотыкается СУБД! На яваскрипты базе наплевать.

Делать это на входе да причем и то и другое вместе - очень глупо.
 

StUV

Rotaredom
denver
Нормальные люди не изменяют данные которые пришли.
нормальные люди делают с данными то, что требуется от данных по тз
если у меня на форуме запрещены хтмл-теги в постах - зачем мне хранить данные с хтмл в базе и стрипить только при выводе ?
 

denver

?>Скриптер
StUV
Нормальные люди не изменяют данные которые пришли.
нормальные люди делают с данными то, что требуется от данных по тз
Тут что, есть какое противоречие?

ЗЫ. Да, я тоже думаю что нужно стрипать перед занесением если тэги не нужны...

ЗЗы. Я понял.. Под "не изменять данные которые пришли" я имел в виду не изменять эти самые данные покуда это не потребуется.. ведь не будешь же ты делать mysql_real_secape_string() со всеми _REQUEST данными, в самом начале скрипта, только потому что их нужно в конце скрипта заносить в базу.
 

StUV

Rotaredom
я скорее про
htmlspecialchars() делают непосредственно при выводе значения в HTML код.
имелось ввиду, что каждая операция над данными производится там, где это надо
общего рецепта нет =)
 

master_x

Pitavale XXI wieku
StUV
нормальные люди делают с данными то, что требуется от данных по тз
если у меня на форуме запрещены хтмл-теги в постах - зачем мне хранить данные с хтмл в базе и стрипить только при выводе ?
конечному пользователю плевать на твое ТЗ... он его никогда не видел. поэтому если конечный пользователь ввел запрещенные знаки (читай теги) то его надо предупредить что так делать нельзя, приводить к формату (твоего ТЗ) без предупреждения-- это бред.
denver
Да, я тоже думаю что нужно стрипать перед занесением если тэги не нужны...
зря так думаешь, читай мой ответ StUV
 

denver

?>Скриптер
master_x
пользователь ввел запрещенные знаки (читай теги) то его надо предупредить что так делать нельзя
Вобщем так. Если юзер ввел <a href="...">куда-то</a> то есть три варианта:
1) оставить всё как есть (выведется как ссылка) хоть небезопасно;
2) вырезать все тэги (до этого, например, предупреждать что они вырезаются) еще до записи в базу;
3) выводить их с htmlspecialchars() при выводе как это сделано здесь (тредстартеру -- но в базу записывать без htmlspecialchars)

Но выводить форму с ошибкой мол "ваш текст содержит запрещенные знаки, замените их на &lt; и &gt; или поудаляйте" как-то странновато.
 

StUV

Rotaredom
master_x
старый флейм возрождается ? ;)

интересно, тебе приходилось проект с гигабайтами данных сохраненных с тегами и выводимых со стрипом в версии 1.0 переводить в версию 2.0, создав при этом универсальную систему валидации кривого юзерского хтмл-я, который при выводе в браузер as-is не рушил бы дизайн ?
 
Сверху