От чего нужно защищать формы?

Forever

Новичок
Я имею довольно печальные знания по поводу безопасности веб-приложений, и сейчас пытаюсь разобрать тему защиты форм.

Пока что знаю, что нужно:
- защищать от повторной отправки
- от CSRF (можно вроде объединить с предыдущим)
- от спама
- от неправильных/вредных данных типа неправильных имейл адресов или sql-инъекций

Что еще можно добавить? О чем человек должен думать, когда решает обеспечить безопасность форм?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Формы априори нельзя ни от чего защитить, можно лишь "защитить" приложение от нежелательных действий пользователя, будь то ввод невалидных email адресов, или повторная отправка формы.

От спама защититься вообще нельзя.

Вредных данных не существует, бывают только нежелательные или невалидные.

Вопрос sql-инъекций вообще сложный будет для тебя, тут надо делать: /summon @Фанат в тред.
 

AnrDaemon

Продвинутый новичок
Этого достаточно только если ты этим пользуешься. Просто знать недостаточно.

Про формы сам вопрос поставлен некорректно. Форма существует только на клиенте, которому ты по определению доверять не имеешь права.
 

fixxxer

К.О.
Партнер клуба
от неправильных/вредных данных типа неправильных имейл адресов или sql-инъекций
Вредных данных не бывает.

Вот смотри, я пишу сюда:

'; delete from xf_users; /*

Что-то пользователи форума на месте. Странно!
 

fixxxer

К.О.
Партнер клуба
имеет, потому что ты пишешь глупость

данные это циферки. нолики и единицы. как они могут быть вредными сами по себе?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Хорошо. Тогда какие нежелательные действия может совершить пользователь , используя форму?
я могу в твою форму напихать чего угодно, равно как и удалить с нее какие-то поля)

Ну, я знаю про подготовленные выражения, вроде этого достаточно в вопросе про инъекции
ищи, тут @Фанат разжевывал уже)
 

Forever

Новичок
как они могут быть вредными сами по себе?
если пользователь введет в БД непрофильтрованный какой-нибудь там тег html, то это может нарушить верстку сайта или привести к xss. Это же вред.

Или например, я, напишу кому-нибудь "Ты лох полный". Это вроде просто данные, просто информация. Но она может навредить психике человека.

Но это все демагогия. Не важно, Вы выиграете, или я - ответ на заданный выше вопрос это мне не даст(
А я тут именно за ним :)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@Forever, для таких борцух за чистоту кода, придумали BB-code ;) Там уж ни один хрен не проскочит, ибо это вообще не html разметка. Можешь использовать ее, предварительно почистив все html тэги в входящих данных.
 

fixxxer

К.О.
Партнер клуба
если пользователь введет в БД непрофильтрованный какой-нибудь там тег html, то это может нарушить верстку сайта или привести к xss. Это же вред.
Если я купил крысиный яд и сам его съел, наверное проблема во мне, а не в крысином яде.
 

antson

Новичок
Партнер клуба
на хабре где-то была статья о проблемах цензуры для китайского рынка.
там даже до того. что определенные сочетания цифр в никах и генерируемым пользователями контенте нужно банить
 

Фанат

oncle terrible
Команда форума
на хабре где-то была статья о проблемах цензуры для китайского рынка.
там даже до того. что определенные сочетания цифр в никах и генерируемым пользователями контенте нужно банить
Да что там Китай! Мне педивикия не дала зарегистрироваться с ником Romik
 

Фанат

oncle terrible
Команда форума
Имей в виду, что в основном ты верно написал, пацаны тут придираются к формулировкам.
В первую очередь они пытаются донести до тебя простую мысль, что защищаться надо не от абстрактных проблем, а от конкретных.
данные попадают в БД? защищаемся от инъекций.
данные выводятся в хтмл? защищаемся от хсс.
форма не анонимная, а доступна только авторизованным пользователям? защищаемся от цсрф
и так далее

плюс тебе надо перевернуть на 180 градусов объект защиты.
от инъекций защищают не "форму", а БД. то есть твоему коду должно быть все равно, из формы пришли данные для записи в БД, из адресной строки или из текстового файла. процедура одна и та же и к формам не имеет отношения.
то же самое с хсс - не важно, откуда данные пришли, важно куда они выводятся. Ты выводимый хтмл должен защищать, а не ввод в форму

чисто специфическая защита для форм - это цсрф и спам. вот от этого надо защищать форму. ну и повторная отправка еще.
 

Вурдалак

Продвинутый новичок
Имей в виду, что в основном ты верно написал, пацаны тут придираются к формулировкам.
В первую очередь они пытаются донести до тебя простую мысль, что защищаться надо не от абстрактных проблем, а от конкретных.
данные попадают в БД? защищаемся от инъекций.
данные выводятся в хтмл? защищаемся от хсс.
форма не анонимная, а доступна только авторизованным пользователям? защищаемся от цсрф
и так далее

плюс тебе надо перевернуть на 180 градусов объект защиты.
от инъекций защищают не "форму", а БД. то есть твоему коду должно быть все равно, из формы пришли данные для записи в БД, из адресной строки или из текстового файла. процедура одна и та же и к формам не имеет отношения.
то же самое с хсс - не важно, откуда данные пришли, важно куда они выводятся. Ты выводимый хтмл должен защищать, а не ввод в форму

чисто специфическая защита для форм - это цсрф и спам. вот от этого надо защищать форму. ну и повторная отправка еще.
Ещё было бы неплохо отказаться от глагола «защищать». Выводить данные в соответствии с форматом — это следовать формату, а не «защищать».
 
Сверху