Учебники

Проверка на стороне клиента

В этой главе мы узнаем, как валидация помогает в тестировании Python.

Основная цель валидации — проверить и убедиться, что пользователь предоставил необходимую и правильно отформатированную информацию, необходимую для успешного завершения операции.

Существует два разных типа проверки:

  • проверка на стороне клиента (веб-браузер)
  • проверка на стороне сервера

Проверка на стороне сервера и проверка на стороне клиента

Проверка пользовательского ввода, выполняемая на стороне сервера во время сеанса обратной передачи, называется проверкой на стороне сервера . Такие языки, как PHP и ASP.Net, используют проверку на стороне сервера. После завершения процесса проверки на стороне сервера обратная связь отправляется обратно клиенту путем создания новой динамической веб-страницы. С помощью проверки на стороне сервера мы можем получить защиту от злонамеренных пользователей.

С другой стороны, проверка пользовательского ввода, выполняемая на стороне клиента, называется проверкой на стороне клиента. Языки сценариев, такие как JavaScript и VBScript, используются для проверки на стороне клиента . В этом виде проверки вся проверка ввода пользователя выполняется только в браузере пользователя. Это не так безопасно, как проверка на стороне сервера, потому что хакер может легко обойти наш язык сценариев на стороне клиента и отправить опасный ввод на сервер.

Параметр закаливания на стороне клиента: обход проверки

Передача параметров в протоколе HTTP может быть выполнена с помощью методов POST и GET. GET используется для запроса данных от указанного ресурса, а POST используется для отправки данных на сервер для создания или обновления ресурса. Одно из основных различий между этими двумя методами заключается в том, что если веб-сайт использует метод GET, то параметры передачи отображаются в URL-адресе, и мы можем изменить этот параметр и передать его веб-серверу. Например, строка запроса (пары имя / значение) отправляется в URL-адресе запроса GET: /test/hello_form.php?name1 = value1 & name2 = value2 . С другой стороны, параметры не отображаются при использовании метода POST. Данные, отправленные на сервер с помощью POST, сохраняются в теле запроса HTTP-запроса. Например, POST /test/hello_form.php HTTP / 1.1 Host: ‘URL’ name1 = value1 & name2 = value2 .

Модуль Python для обхода валидации

Модуль Python, который мы собираемся использовать, — это механизация . Это веб-браузер Python, который предоставляет возможность получения веб-форм на веб-странице и облегчает представление входных значений. С помощью механизации мы можем обойти проверку и изменить параметры на стороне клиента. Однако, прежде чем импортировать его в наш скрипт Python, нам нужно установить его, выполнив следующую команду:

pip install mechanize

пример

Ниже приведен скрипт Python, который использует mechanize для обхода проверки веб-формы с использованием метода POST для передачи параметра. Веб-форму можно взять по ссылке https://www.tutorialspoint.com/php/php_validation_example.htm и использовать на любом фиктивном веб-сайте по вашему выбору.

Для начала давайте импортируем браузер механизации —

import mechanize

Теперь мы создадим объект с именем brwsr браузера механизации —

brwsr = mechanize.Browser()

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

brwsr.set_handle_robots( False )

Теперь нам нужно предоставить URL нашего фиктивного веб-сайта, содержащего веб-форму, в которой нам нужно обойти проверку.

url = input("Enter URL ")

Теперь следующие строки установят для некоторых парентеров значение true.

brwsr.set_handle_equiv(True)
brwsr.set_handle_gzip(True)
brwsr.set_handle_redirect(True)
brwsr.set_handle_referer(True)

Затем он откроет веб-страницу и распечатает веб-форму на этой странице.

brwsr.open(url)
for form in brwsr.forms():
   print form

Следующая строка кодов будет обходить проверки в указанных полях.

brwsr.select_form(nr = 0)
brwsr.form['name'] = ''
brwsr.form['gender'] = ''
brwsr.submit()

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