Предотвратите Внедрение SQL на свободных полях текста ответа в классическом ASP

У меня есть некоторые поля свободного текста ответа, и я не уверен, как вычистить их для предотвращения Внедрения SQL. Какие-либо идеи?

5
задан casperOne 19 November 2011 в 05:05
поделиться

2 ответа

Ну, каталог также может быть игнорирован файлом .gitignore - поэтому вам нужно проверить для репозитория .git, и если есть один, разбирайте .gitignore, чтобы увидеть, действительно ли этот каталог в репозитории Git.

Что именно вы хотите сделать? Там может быть более простая способ сделать это.

Редактировать: Вы имеете в виду: «Это каталог корень репозитория Git» или, вы имеете в виду «это каталог часть репозитория Git»?

для первого, тогда просто проверьте, есть ли. Гит - поскольку Это в корне, и вы закончите. Для второго, как только вы определили, что вы находитесь в репозитории Git, вам нужно проверить .gitignore для подкаталого оказания.

-121--926217-

Создание параметризованного запроса вместо того, чтобы соединить ввод пользователя в запрос.

Вот как это сделать в Classic Asp: http://blog.binaryborooyah.com/blog/post/Classic-ass-data-access-using-parameterized-sql.aspx

Также важно отметить, что единственный способ быть на 100% Из инъекций SQL является параметризом любого оператора SQL, который использует пользовательский ввод, даже когда он находится в базе данных. Пример: скажем, вы принимаете пользовательский ввод через параметризованный запрос или сохраненную процедуру. Вы будете в безопасности на вставке, однако необходимо убедиться, что что-нибудь по дороге, которая использует этот вход, также использует параметр. Непосредственно объединяющие пользовательский ввод - плохая идея в любом месте, в том числе внутри БД.

16
ответ дан 18 December 2019 в 10:44
поделиться

Я не знаю о xVal, но что касается ASP.NET MVC стороны вещей, если вы посмотрите на источник вы увидите некоторые статические последовательности readonly, которые представляют эти значения.

public static readonly string ValidationInputCssClassName = "input-validation-error";
public static readonly string ValidationMessageCssClassName = "field-validation-error";
public static readonly string ValidationSummaryCssClassName = "validation-summary-errors";

Поэтому либо вы редактируете источник по своему вкусу (что также может исправить xVal), либо изменяете выводимый код, чтобы каким-то образом использовать другие значения.

Если xVal использует jQuery Validation (что, я думаю, он делает...?), можно изменить его значение по умолчанию для параметра errorClass. Мой ответ здесь может помочь вам на этом пути.

HTH,
Чарльз

-121--2616289-

Создайте параметризованный запрос вместо объединения входных данных пользователя в запрос.

Вот как сделать это в классическом asp: http://blog.binarybooyah.com/blog/post/Classic-ASP-data-access-using-parameterized-SQL.aspx

Также важно отметить, что единственным способом обеспечения 100% безопасности от sql injection является параметризация любой инструкции sql, которая использует пользовательский ввод, даже если она находится в базе данных. Пример: Предположим, что пользователь вводит данные с помощью параметризованного запроса или хранимой процедуры. Вы будете в безопасности на вставке, однако вы должны убедиться, что все, что в пути, который использует этот ввод, также использует параметр. Непосредственная конкатенация пользовательского ввода - плохая идея в любом месте, в том числе внутри базы данных.

-121--4631880-

Вызовите хранимую процедуру .

EDIT : Просто уточните. Построение динамического sql в sp, конечно, может быть столь же опасным, как и в приложении, но привязка пользовательских входов в запрос защитит вас от sql injection, как описано здесь (обсуждение для Oracle, но принцип применим в другом месте):

http://asktom.oracle.com/pls/asktom/f?p=100: 11:0:::: P11 _ QUESTION _ ID: 23863706595353

Это не динамический SQL проблема (весь sql является динамическим в Oracle на самом деле - даже статический sql в pro * c/plsql!). Это " "этого sql, который является проблема. Если пользователь дает вам входные данные - они должны быть ПРИВЯЗАНЫ к запросу -- не конкатенирован. Второй ты объединение пользовательского ввода в SQL - это как если бы вы дали им возможность передать вам код и вы выполнить этот код. Простой и простой.

0
ответ дан 18 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: