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

Вид: 12497|Ответ: 0

[Связь] 2011 MSSQL Statement Password Validation Safety Tutorial

[Скопировать ссылку]
Опубликовано 26.11.2014 15:47:51 | | |
Как международный стандартный запрос к базе данных, SQL-операторы широко используются в различных средах программирования. Как зрелая и стабильная система, логин пользователя и проверка пароля крайне важны. В своей ежедневной программной работе я обнаружил, что многие программисты используют SQL-операторы для проверки паролей пользователей с помощью такого оператора:
sql="Выбрать * из пользовательской таблицы, где name='"+name+"' и password='"+password+"'"
Имя и пароль — это имена пользователей и пароли, введённые пользователем, а вышеуказанные выписки выполняются для проверки легитимности пользователя и пароля. Однако при анализе можно выяснить, что в вышеуказанных утверждениях есть фатальные лазейки. Когда мы вводим следующую строку в имя пользователя: 111'or'1=1, а затем вводим пароль небрежно, мы устанавливаем его на aaaaa. После замены переменной оператор SQL становится следующей строкой:
sql="Выбрать * из пользовательской таблицы, где name='111'or'1=1' и password='aaaa'
Всем известно, что когда оператор select оценивает условия запроса, он игнорирует следующие операции и (и) при встрече с операциями или (или), и значение 1=1 в вышеуказанном утверждении всегда верно, что означает, что независимо от значения, введённого в пароль, он может пройти вышеуказанную проверку пароля! Решение этой проблемы очень простое, существует множество методов, наиболее распространённый — оценка легитимности пользователя и пароля, введённого пользователем, до проведения проверки, а специальные символы, такие как одиночные кавычки и знаки равенства, не допускаются.
Вышеуказанные проблемы, хотя и кажутся простыми, существуют. Например, ранняя версия знаменитой онлайн-игры «Smiling Proud Jianghu» в Интернете имела такую проблему, и автор также тщательно проанализировал некоторые из предыдущих программ после прочтения отчёта о уязвимостях этой игры, и таких лазеек было немало. Это действительно должно быть нашим вниманием. Это также выявляет недостаток опыта программирования и осведомлённости о безопасности у молодых программистов, включая автора. В то же время это напоминает, что программистам следует полностью учитывать безопасность программы при проектировании и не быть небрежными, иначе незначительное упущение может привести к серьёзным последствиям.




Предыдущий:SQL 2005: безопасность баз данных и целостность ссылок
Следующий:2011 MSSQL System Security SA Урок по риску безопасности пароля
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com