Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 12385|Відповідь: 0

[Зв'язок] Урок з вразливості безпеки MSSQL Statement Password Validation 2011

[Копіювати посилання]
Опубліковано 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 оцінює умови запиту, він ігнорує наступні операції та (and) при зустрічі з операціями або (або), а значення 1=1 у наведеному вище твердженні завжди істинне, що означає, що незалежно від значення, введеного в пароль, він може пройти вищезазначену перевірку пароля! Рішення цієї проблеми дуже просте, існує багато методів, найпоширенішим є оцінка легітимності користувача та пароля, введеного користувачем, перед перевіркою, а спеціальні символи, такі як окремі лапки та рівність, не дозволяються.
Вищезазначені проблеми, хоч і можуть здаватися простими, існують. Наприклад, рання версія відомої онлайн-гри «Smiling Proud Jianghu» в Інтернеті мала таку проблему, і автор також ретельно проаналізував деякі програми, які писав раніше, після прочитання звіту про вразливості цієї гри, і таких лазівок було багато. Це справді має привернути нашу увагу. Це також виявляє брак досвіду програмування та обізнаності про безпеку у молодих програмістів, включаючи автора. Водночас це також нагадує, що програмісти повинні повністю враховувати безпеку програми при розробці програми і не повинні бути недбалими, інакше навіть незначне упущення може призвести до серйозних наслідків.




Попередній:Безпека бази даних SQL 2005 та референтна цілісність
Наступний:2011 MSSQL System Security SA Урок з ризиків безпеки за слабким паролем
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com