Рекомендуется: говорить о каталоге деревьев DHTML XML ASP CSS Справочник по деревьям отображает программу Описание: Самооценка таблицы данных часто появляются в наших проектах. Если мы посмотрим на них с общей точки зрения, вся таблица представлена как структура данных дерева (для сложных случаев она может стать графиком). Когда мы делаем эту таблицу
В программировании ASP можно сказать, что аутентификация идентификации часто используется. Но как мы можем достичь безопасности аутентификации?
Страница подачи формы: sub.htm
| Ниже приведено цитируемое содержание: <html> <голова> <title> Вход администратора </title> <тело> <form name = form1 method = post action = sub.asp> <p> Администратор: <input type = text name = userid size = 25 maxlength = 20> пароль: <input type = text name = pass size = 12 maxlength = 20> <input type = отправить имя = отправить значение = отправить> </p> </form> </body> </html> |
| Ниже приведено цитируемое содержание: Sub.asp программа <% Получать данные из формы user = request.from (userid) Проверьте, являются ли данные, представленные в форме пусты (страница формы может контролироваться JavaScript или VBScript, но не забудьте контролировать ее здесь! Если user = then Перейдите на страницу с помощью ошибок! response.redirect err1.htm Это предложение может быть бесполезным, но лучше добавить его! response.end конец, если pass = request.from (pass) Если проход = тогда response.redirect err2.htm response.end конец, если Присоединяйтесь к базе данных file = server.mappath (ваша база данных) Установить conn = server.createObject (adodb.connection) DR = Driver = {Microsoft Access Driver (*.mdb)}; dbq = & file Conn.Open Dr Установить rs = server.createObject (adodb.recordset) Ключ - это язык SQL здесь sql = select * из таблицы, где user = & user & and pass = & pass & Rs.Open SQL Если не rs.eof, то Если найдено, перейдите на страницу управления Reponse.redirect Login.asp еще Если не найдено, введите страницу ошибки response.write err3.htm конец, если %> |
Каждый считает, что приведенный выше код должен быть в порядке, но вот серьезный риск безопасности:
Если я хочу войти в администратор, я могу ввести его в поле ввода формы Sub.htm:
Введите в первом текстовом поле: A или 1 = 1 или или = =
Введите во втором текстовом поле: A или 1 = 1 или или = =
Отправьте его, вы увидите ... Ву, послушай меня, хорошо ли это сделать, кирпичи будут брошены снова ...
а и 1 - любые персонажи
Кто -то может спросить, почему вы вводите этих персонажей в качестве администратора? ?
На самом деле, эти персонажи являются обманом для языка SQL в вашей программе и успешно введены.
Все видят: Запустите программу SQL - это запись, которая запрашивает таблицу и соответствует пользователю = & user & and Pass = & Pass & Conders.
sql = select * из таблицы, где user = & user & and pass = & pass &
Я ввел приведенный выше код, и это стало:
SQL = SELECT * из таблицы, где user = a или 1 = 1 и pass = a или 1 = 1
Давайте посмотрим, может ли есть причина не войти? ? Дайте мне причину не войти, во -первых!
Приведенное выше поле пользователя является типом символа, и если это числовой тип, то же самое верно!
Решение:
1. Функциональный альтернативный метод:
Используйте заменить, чтобы заменить ввод контента пользователем специальными символами для достижения цели управления! SQL = SELECT * из таблицы, где user = & replication (user,,) и pass = & reply (pass ,,) &
Этот метод может заменить только один символ за раз. На самом деле, опасные персонажи не только, но и такие символы, как>, <и, %, должны полностью контролироваться. Но что я должен сделать, если я не кажется компетентным с функцией замены? ?
2. Метод управления программой
Используйте программу для управления всем контентом, введенным клиентом, чтобы вы могли полностью контролировать любые возможные опасные символы или коды, введенные клиентом. Я сделаю этот метод!
| Ниже приведено цитируемое содержание: <% Захватить содержимое формы, представленное пользователем user = request.from (пользователь) pass = request.from (pass) ... Цикл управление начинается для i = 1 к Лену (пользователь) Используйте функцию MID, чтобы прочитать символ в позиции I в пользователе переменной США = средняя (пользователь, я, 1) Сравнение символов чтения Если мы = или US =% или US = <или us => или us = и затем Если приведенные выше символы содержится, появится сообщение об ошибке. Приведенные выше специальные символы не могут быть сдержаны. response.redirect err2.htm response.end конец, если следующий ... %> |
Поделиться: Parse ASP и хранимые процедуры Есть много статей о ASP и сохраненных процедурах, но я сомневаюсь, что авторы фактически практиковали это. Я прочитал много соответствующей информации, когда я был в начале, и обнаружил, что многие из предоставленных методов не имели места на практике. Для простых приложений это