Подготовленные отчеты и санитарные данные - PullRequest
0 голосов
/ 31 октября 2019

При использовании подготовленного оператора с классическим ASP, такого как:

SQL = "SELECT user_name, user_sign_up_date FROM tbl_users WHERE this = ? AND id = ? "

Set stmt01 = Server.CreateObject("ADODB.Command")
stmt01.ActiveConnection = oConn
stmt01.Prepared = true
stmt01.commandtext = SQL
stmt01.Parameters.Append stmt01.CreateParameter("@x1", adVarChar, adParamInput, 255, card_pwd)
stmt01.Parameters.Append stmt01.CreateParameter("@x2", adInteger, adParamInput, , this_id)
set myRS = stmt01.Execute

Помимо обычной проверки смысла, например, для проверки того, что число является числом, и т. Д., Выполняет ли процесс использованияэтот тип параметризованного оператора означает, что мне больше не нужно беспокоиться, например, о varchar или текстовом поле, о санитарной обработке данных, вводимых пользователями - например, мне больше не нужно использовать функцию, чтобы протолкнуть все вводимые пользователем данные через Server.HTMLencode?

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

Ответы [ 3 ]

0 голосов
/ 02 ноября 2019

Другие верны, что вам не нужно беспокоиться о содержимом параметров. Вы должны беспокоиться о длине строк. Я бы передал Left(card_pwd, 255) на CreateParameter(), чтобы избежать сбоев в работе сценария. Я склонен не беспокоиться о вызове IsNumeric() для целочисленных параметров, но это может быть полезно (попробуйте передать глупость и посмотрите, что произойдет).

0 голосов
/ 15 ноября 2019

Вы объединяете два разных типа санации. Параметризация SQL предотвращает уязвимость «таблиц Бобби» - злонамеренно записанный бит данных, который обманывает SQL, чтобы завершить текущий запрос и выполнить отдельный запрос по выбору злоумышленника.

https://bobby -tables.com

Даже с параметрами SQL злоумышленник может попытаться запустить скрипт на вашей странице, например, введя «alert ('Gotcha!')" В поле. Отобразите данные поля на странице HTML, и этот сценарий будет записан и выполнен. Для предотвращения , что вы используете Server.HTMLencode

0 голосов
/ 31 октября 2019

Если вас интересуют атаки с использованием SQL-инъекций, тогда параметризация должна исключить возможность подделки строки SQL, поскольку значения предоставляются во время выполнения.

...