twin
Цитата |
Не только ники. Вообще все, что не касается разметки. |
Тут тоже самое, вместо того чтобы проверить длину и допустимые символы и остальное, нужно разрешить пользователю в поле "логин" вставить войну и мир? А потом в сообщениях, в комментариях, в указании автора статье, автора темы итд обрабатывать его логин, обрезая до нужной величины и вырезая от туда всякие кракозябры? Каждый раз?
Цитата |
Вобщем то делайте как хотите, я просто высказал и аргументировал своё мнение, не более того. |
Я понимаю что бывают разные случаи, иногда лучше делать первый вариант, а иногда второй.
А опрос такой, что либо одна крайность, либо другая, либо третья.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
фильтрация данных и валидация разные вещи. Фильтрация должна быть подефолту для всех данных даже валидных.
Вот примерн нубства:
$_POST['cool'] = "1 <script>alert('злыдень');</script>";
if(intval($_POST['cool'])) {
echo 'крутяк у нас число, занесем в базу';
} else {
echo 'не число!';
}
А потом мы решили, что этот cool не имеет никаких дыр потому, что мы его завалидировали, и тут у мы получаем xss на пользовательском выводе. А если придерживаться принципа, что фильтруем все и вся ну кроме int и float значений, их через htmlspecialchars прогонять не требуется. То максимум какой геморой мы получим, так это искажение данных которые ввел пользователь, но не скриптовый инклюдинг, а косяк разраба когда он валидировал данные.
Цитата |
Тут тоже самое, вместо того чтобы проверить длину и допустимые символы и остальное, нужно разрешить пользователю в поле "логин" вставить войну и мир |
Это уже валидация данных. Чтобы они подходили под наши фетиши типо только английские буковки с циферками, ну еще можно часть китайских иероглифов и чтоб длина была не больше 13 потому, что сотона мой друг.
Цитата |
вырезая от туда всякие кракозябры |
Вот поэтому я всегда мечтал зарегать ник себе вот такой: 開玩笑मज़ाשמחה
а такие злые люди как ты не дают кракозябры писать :D
А еще просто моразм, это когда пароль должен состоять только из A-Z0-9!@#$%^&*( и все, а чего UTF-8 забанили? может я хочу себе на арабском пароль сделать: ثم قررنا أن هذا ليس
Во вторых ранее было сказано про поиск, если загонять данные отфильтрованные сразу в базу, нужно костылить с <> и другими символами.
В третьих, на подходе html темплейты нативные, там сырые данные вообще фильтровать не нужно. прям из базы дергай со всеми <script>alert('злыдень');</script> жсон енкодом проходи и корми темлейту и он выведет их как текст <script>alert('злыдень');</script> если правильно юзать.
и не нужно всяких извращений с document.write, innerHTML, print
twin
Если честно я в недоумении, мало того что я считаю странным фильтровать каждый раз логин htmlspecialchars, конкретно для логина он вообще не нужен даже на входе, достаточно preg_match проверки на допустимы символы в логине, классически это буквы, цифры ну и еще пара- тройка символов.
ИМХО само собой.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
ABC
Выше почитай про арабские ники. Собственно он все сказал верно, мне нечего добавить.
Только что разве это:
Цитата |
— Извините, Ваш пароль используется более 30 дней, необходимо выбрать новый! — розы — извините, слишком мало символов в пароле! — розовые розы — Извините, пароль должен содержать хотя бы одну цифру! — 1 розовая роза — Извините, не допускается использование пробелов в пароле! — 1розоваяроза — Извините, необходимо использовать как минимум 10 различных символов в пароле! — 1грёбанаярозоваяроза — Извините, необходимо использовать как минимум одну заглавную букву в пароле! — 1ГРЁБАНАЯрозоваяроза — Извините, не допускается использование нескольких заглавных букв, следующих подряд! — 1ГрёбанаяРозоваяРоза — Извините, пароль должен состоять более чем из 20 символов! — 1ГрёбанаяРозоваяРозаБудетТорчатьИзЗадаЕслиМнеНеДашьДоступПрямоБляСейчас! — Извините, этот пароль уже занят! С сайта http://www.inpearls.ru/ |
Я вообще крайне отрицательно отношусь к всякого рода "фильтрам". Нужно просто уметь работать с данными, а не искажать их и тем более не запрещать. Это дилетантство. С длиной логина еще соглашусь, не более. Все остальное от непрофессианализма.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Да, добавить действительно нечего.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
I++
Цитата |
Вот пример нубства: |
Ну так и в базу будем писать
(int)$_POST['cool'];
раз уж пишем число :D
Тут вопрос про фильтр.
пользователь -> фильтр -> база -> клиент
или
пользователь -> база -> фильтр -> клиент
Если говорить про "нубство", то вероятнее забыть поставить фильтр при выводе содержимого (которое может выводиться в разных скриптах много раз), чем при сохранении содержимого один раз.
Взять те же комментарии, сегодня они выводяться в новостях, завтра взял и вывел последние 10 комментов на главной, после завтра сделал отдельную страницу с топом комментарий, потом сделал страницу со всеми комментариями пользователя и каждый раз нужно помнить что данные сырые. А если сегодня ты разработчик, а завтра дядя Вася? Понятно что выводом должен заниматься один метод, но а что если изначально метод не умеет сортировать по рейтингу и дядя Вася решил написать свой? Это всё разговоры про нубство.
Но зачем далеко ходить, вот форум, если бы он каждый раз обрабатывал bb коды, а если просмотров тем было бы в разы больше, зачем такая лишняя нагрузка? Тут встаёт вопрос кеширования, сколько файлов получилось бы с каждого сообщения? А если админ решит добавить рейтинг к сообщениям, что каждый + или -, будет пересоздавать кеш или дополнительно к кешу делать еще по запросу? Ради чего всё?
А потом придёт тётя паранойя и мы будет фильтровать еще и кеш, вдруг нубство и где то накосячили.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
По поводу логинов ИМХО нужно регать по почте или телефону.
А все остальное имя фамилия/псевдоним. И да, я считаю валидация и запреты нужны, зачем нам на форуме чувак, который своим 50 символьным ником будет растягивать дизайн?
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
inpost
19.11.2014 - 02:27
Arhword-wrap:break-words;
И не благодари
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Arh
Цитата |
Если говорить про "нубство", то вероятнее забыть поставить фильтр при выводе содержимого (которое может выводиться в разных скриптах много раз), чем при сохранении содержимого один раз. |
Ты когда последний раз брался голыми руками за электрический провод? Чет тут никто не забывает. А ведь столько вероятностей...
Цитата |
И да, я считаю валидация и запреты нужны, зачем нам на форуме чувак, который своим 50 символьным ником будет растягивать дизайн? |
Ну да, еще антимат поставим, про политику фильтр, про сиськи... и заживем долго и счастливо.
На это дело есть модераторы, запретами тут ничего не решишь. Как бы не хотелось, уповая на всемогущество компьютера.
Цитата |
Тут встаёт вопрос кеширования, сколько файлов получилось бы с каждого сообщения? |
Зачем обязательно файлы. Есть динамическое кэширование допустим. Да и еще куча способов снизить нагрузку, которая по большому счету не так уж и велика.
А теперь посмотри на это с другой стороны. Допустим тег [quоte][/quоte] занимает 15 байт, а "отфильтрованный" (аж передернуло) на нашем форуме сам посчитай:
</div><table border=0 align=center width=95% cellpadding=3 cellspacing=1><tr><td><b>Цитата</b> </td></tr><tr><td id=QUOTE></td></tr></table><div class=postcolor>
На сколько распухает база, если это один из самых популярных тегов? Плюс всякие < > и иже с ними. Плюс время на обратное преобразование, если учитывать кнопку

к примеру или другое редактирование. Плюс поиск, коим пользуются не так уж редко. Плюс возможные глюки. Плюс, плюс, плюс. Тут еще сильно посчитать нужно выгоду.
Не всё то золото, что блестит.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Цитата |
Понятно что выводом должен заниматься один метод, но а что если изначально метод не умеет сортировать по рейтингу и дядя Вася решил написать свой? Это всё разговоры про нубство. |
Метод в модели или еще где не должен ничего фильтровать, фильтровать должен последний в цепочке это вьюха, рендер кому как удобнее. И все равно как Вася там решил сортировать и извращаться, Вася должен знать, что мух от котлет нужно отделять и должен отдавать вьюхе, рендеру, данные отдельно, а шаблон отдельно.
Цитата |
Ну так и в базу будем писать
(int)$_POST['cool'];
раз уж пишем число |
Не всегда так пишут, в этом и проблема.
Цитата |
Тут вопрос про фильтр. |
пользователь -> база -> фильтр -> клиент
Потому, что если пьяный Вася будет использовать схему пользователь -> фильтр -> база -> клиент
вероятность того, что он промахнется в своих изысканиях - велик.
----
Фильтрация и валидация данных по сути разные вещи, фильтрация избавляет нас от потенциальных трипперов превращая все в сущности которые не будут интерпретированы как код и не будет нарушена структура. Валидация же, это набор наших хотелок, например для социальной сети. Возраст: от 12 до 200 лет, имя от 3 до 10 символов китайской иероглифики. Ну или там размер члена от 10см до 100см, а все у кого меньше 10 не могут регистрироваться и вот после всех этих валидаций, делается конкурс у кого самый длинный, но Вася при кодинге допустил ошибку валидации размеров члена и нашелся хацкер Петя, который посмотрел, что вася просто валидирует число ли пришло или нет и петя пишет 100500 и он первый в рейтинге

В данном случае возникает логическая ошибка, но никак не уязвимость с нарушением структуры данных.
Цитата |
И да, я считаю валидация и запреты нужны, зачем нам на форуме чувак, который своим 50 символьным ником будет растягивать дизайн? |
Валидация конечно нужна, если пользовательский ввод может нарушить логику приложения, выше я описал, что ожидался диапазон от 10 до 100, а тут 100500 неожиданно.
inpost
Так и знал, кто нибудь да напишет это, только это не спасёт =)
twin
Цитата |
Ты когда последний раз брался голыми руками за электрический провод? Чет тут никто не забывает. А ведь столько вероятностей... |
В том то и дело что проще выключить рубильник и работать со всеми проводами как удобней, чем с каждым проводом под напряжением.
Цитата |
Ну да, еще антимат поставим, про политику фильтр, про сиськи... и заживем долго и счастливо. |
Валидации делаются в первую очередь для удобства пользователей. Что бы дизайн не вылезал, что бы ник можно было выговорить, что бы всё было чисто и культурно. Представляю в какую помойку бы превратились соц сети, если бы там фамилии можно было писать поэмами на c++.
Цитата |
Допустим тег [quоte][/quоte] занимает 15 байт |
Ну это на форуме. А везде давно <blockquote>, разница не особо что [ b ] что <b>
Цитата |
Зачем обязательно файлы. Есть динамическое кэширование допустим. Да и еще куча способов снизить нагрузку, которая по большому счету не так уж и велика. |
А как? В оперативке сообщения хранить?
Цитата |
Плюс время на обратное преобразование |
Не думаю что время на обратно преобразование занимает больше чем на просто преобразование. Да и пофиг собственно, это обратное преобразование происходит один раз при редактировании, а не миллион раз, при прочтении сообщения.
I++
Ну тогда Вася знает что так делать нельзя
$_POST['cool'] = "1 <script>alert('злыдень');</script>";
if(intval($_POST['cool'])) {
echo 'крутяк у нас число, занесем в базу';
} else {
echo 'не число!';
}
И вообще Вася читает любую документацию и на него все молятся =)
Цитата |
Не всегда так пишут, в этом и проблема. |
Вася пишет, он же всё знает =)
Цитата |
Потому, что если пьяный Вася будет |
Да блин, ты пишешь что Вася должен выводить данные через фильтр, типа так должно быть, типа нефиг быть нубом, а потом пишешь, что вдруг нуб.
Вероятность как раз больше что он забудет отфильтровать перед шаблоном.
Потому что часть пользователь -> фильтр ->база сделал ты, а остальные части база -> клиент в разных скриптах делает Вася или пьяный ты и еще кто.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.