Являются ли параметризованные вызовы / санитарные / экранирующие символы необходимыми для хэшированных полей пароля в запросах SQL? - PullRequest
0 голосов
/ 31 декабря 2010

При написании системы входа в систему для веб-сайта стандартно используется некоторая комбинация параметризованных вызовов, санация пользовательского ввода и / или экранирование специальных символов для предотвращения атак с использованием SQL-инъекций.

Однако любая хорошая система входа в систему должна также хэшировать (и, возможно, солить) каждый пароль перед тем, как он входит в SQL-запрос, так что все же необходимо беспокоиться о атаках с использованием SQL-инъекций в паролях? Разве хеш полностью не исключает возможность самостоятельной атаки SQL-инъекцией?

РЕДАКТИРОВАТЬ: Мне также было бы любопытно, если текущие сайты очищают свои поля паролей или если это вообще не беспокоит.

Ответы [ 3 ]

3 голосов
/ 31 декабря 2010

Всегда лучше предположить, что любой вызов в базу данных может содержать внедрение запроса.

Лично я очень сомневаюсь, что вызов с хешем SHA1 когда-нибудь сможет внедрить код, но есть ли какая-то причина, по которой вы все равно не очистите его?

Паранойя - лучший способ борьбы с инъекцией;)

1 голос
/ 31 декабря 2010

Вероятно, нет.

Но не является ли хешированный пароль просто еще одним параметром для вызова базы данных?Ты имеешь в виду, что ты будешь смешивать параметризацию 'n'match' для всех других входных данных, кроме паролей, где вы используете конкатенацию строк?

0 голосов
/ 31 декабря 2010

Зависит от того, какой запрос вы делаете.

Если ваш запрос выглядит как

SELECT username from user_logins WHERE 
  username=? AND password_md5 = md5(?)

Тогда не экранирование указанного пароля внутри функции md5 приведет к уязвимости SQL-инъекций.

Просто используйте параметризованные запросы все время, если нет какой-то невероятно веской причины, по которой вы не можете (Подсказка: IN (...) не очень хорошо с ними работает).

Параметризованные запросы легче выполнять правильно, чем экранирование, и они более безопасны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...