2010-11-17 1 views
0

У меня есть форма и на данный момент вы можете ввести любой javascript и т. Д. Любой XSS и т. Д.Защитить HTML-форму от Javascript/Attacks

Как мне создать белый список, чтобы вы могли отправлять только персонажи.

В какой-то момент я хотел бы что-нибудь, что начинается с http:// быть преобразованы в

<a href="http://..."></a>

Благодарности

Является ли это эффективным? http://htmlpurifier.org/

+4

Вы знаете, что вы не можете использовать код на стороне клиента для проверки данных - ваши пользователи могут просто отключить JS. Поэтому, если вы не используете javascript на стороне сервера, вам нужно будет проверить серверную сторону на другом языке для наличия тегов сценариев/плохих символов ... – tobyodavies

+0

Спасибо, я понимаю это сейчас. Можете ли вы порекомендовать какие-либо готовые решения? – switz

+0

Что такое скрипт на стороне сервера, который вы используете? это php, .net. perl, ... – sathish

ответ

7

JQuery или Javascript предпочтителен

Ну, нет, вы не можете сделать это, вы видите? Потому что даже если вы «санировать» ваши данные с помощью JavaScript, останавливая кто Noone от

  • отключив JavaScript
  • с помощью консоли разработчика браузера, чтобы возиться с данными
  • делать POST непосредственно, без браузера

Другими словами, вы должны выполнить проверку/дезинфекцию на стороне сервера. Проверка Javascript позволяет улучшить опыт ваших пользователей (например, мгновенная обратная связь с недопустимым вводом).

+0

Я понимаю. Так что же вы рекомендуете использовать? Спасибо – switz

+0

??? @Switz, shylent рекомендовал что-то: '(...) вам нужно выполнить валидацию/дезинфекцию на стороне сервера.' – acm

1

Но все же во многих приложениях с высокой нагрузкой разработчики используют частично клиентские проверки (но все входы должны быть подготовлены для записи на db).

Как вы будете использовать PHP, я предлагаю вам разобрать ваши значения $ _POST с помощью htmlspecialchars(), mysql_real_escape_string() и так далее.

Вам нужно будет использовать регулярное выражение для преобразования всего, что начинается с ссылок «http: //», в ссылки (ну, вы также можете использовать explode ('.', $ _POST ['yourInput']), что может быть проще для тебя).

+0

Очень полезно спасибо :) Чтобы обновить сообщение: mysql_real_escape_string устарела в PHP 5.5.0 и он был удален в PHP 7.0.0. Источник: http://php.net/manual/en/function.mysql-real-escape-string.php –

Смежные вопросы