Опасения по поводу возможного неправильного использования Regex? - PullRequest
1 голос
/ 12 августа 2010

У меня есть следующее регулярное выражение: ^[a-zA-Z](.*)[a-zA-Z]$ как на стороне Javascript, так и на стороне PHP, которую я использовал для проверки полей имени человека и сообщения в форме контакта (нетвзаимодействие с базой данных).Это в основном гарантирует, что первый и последний символ в поле являются алфавитами, и допускает что-то еще между ними.

Мои опасения:

  1. Для этого типа функциональности я долженбыть обеспокоенным попыткой подтвердить имя человека или сообщение?Единственная вещь, которую я проверяю или скорее защищаю от этого, - это любой злонамеренный ввод.
  2. Я не уверен, к какому типу атак я могу оставить свой сайт открытым, если единственное, что я делаю, это проверяю, что поля не отображаютсят пусто.

Это действительные проблемы?Если я начну обслуживать все типы сценариев «Имя» и «Сообщение», я получу очень длинное выражение, которое будет слишком сложно поддерживать ... Так оно того стоит, или существует минимальное регулярное выражениечто я должен использовать для этих двух полей для защиты от злонамеренных атак / сценариев?

(PS - один из моих коллег мне только что напомнил об именах, начинающихся с "!")

СПАСИБО !!

Ответы [ 2 ]

2 голосов
/ 12 августа 2010
  1. Должен ли я беспокоиться о попытках проверить имя или сообщение человека?Единственная вещь, которую я проверяю или скорее защищаю от любого злонамеренного ввода.

Защита от злонамеренного ввода отличается от проверки того, что имя человека действительно является именем человека.Поскольку имена людей могут быть такими разными (содержащими всевозможные символы), может быть лучше просто убедиться, что в них есть хотя бы один непробельный символ, и покончить с этим.У некоторых людей есть только одно имя, а у некоторых - только одна буква.

Я не уверен, к какому типу атак я могу оставить свой сайт открытым, если единственное, что я делаю, это проверяю, чтобы поля не были пустыми.

Защита от злонамеренных действийвход - это другая проблема, и он включает, например, фильтрацию записи перед ее вводом в базу данных, но это (вероятно) работа для вашей абстракции или структуры базы данных.

Вы также должны будете убедиться, чтовсякий раз, когда вы выводите такие данные как часть HTML-страницы, вы используете на ней htmlspecialchars().Это защищает от межсайтовых скриптов (включение HTML-тегов в простой текст).Это (вероятно) работа для вашей системы шаблонов или слоя представления.

2 голосов
/ 12 августа 2010

Теперь кто-то по имени Дитер Вос больше не может использовать вашу контактную форму.Это плохо.

Если у вас нет взаимодействия с базой данных, и данные отправляются кому-то по электронной почте или тому подобное (в отличие от публичного отображения в Интернете), тогда не так многопроблема безопасности, чтобы защитить себя от.Я бы порекомендовал просто не делать никаких проверок.(За исключением, может быть, пустых полей.)

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

...