2011-12-16 4 views
3

У нас есть сайт ASP.NET/C#. Наши разработчики покинули берег в Азии, и я только что обнаружил, что они размещают исходный SQL на сайте.Уязвимости SQL Injection

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

+1

Первым делом было бы удалить все встроенные (необработанные) SQL с переднего и заднего конца и использовать только хранимые процедуры, передающие значения в качестве параметров –

+0

Передняя часть как в виде ... в формах как скрытые входы и прочее? – Corbin

+0

Да, как в, поля ввода в формах/страницах – Rup

ответ

6

Попытка обнаружить уязвимости от передней может помощь, но на самом деле вы должны смотреть на код, в частности, на весь код, относящийся к DbCommand, SqlCommand и т. д. Ключевым моментом, как вы знаете, никогда не является конкатенация пользовательского ввода в запрос, а для его параметризации. доступный, который может облегчить эту параметризацию - или, по крайней мере, проще, чем сделать это вручную. Например, если у вас есть:

using(var cmd = conn.CreateCommand()) { 
    cmd.CommandText = "delete from Orders where id = " + id; 
    cmd.ExecuteNonQuery(); 
} 

затем инструмент, как щеголеватая-дот-сеть позволит вам делать такие вещи, как:

conn.Execute("delete from Orders where id = @id", new {id}); 

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

1

Сначала проверьте эту статью: How To: Protect From SQL Injection in ASP.NET

Я бы убедиться, что все, что вы либо использовать хранимые процедуры в exlusively или если у вас есть команды regualr SQL вы используете их только с paramters и никогда динамически строить содержание CommandText property

+3

хранимые процедуры не добавляют больше безопасности, чем правильно параметризованный обычный SQL, но делают развертывание более сложным; нет необходимости в SPROC здесь, ИМО. Просто используйте параметры правильно. –

4

Посмотрите Scrawlr или Acunetix

это инструменты для сканирования сайта на наличие уязвимостей, особенно для SQL Injection. Еще один способ - подписаться на одну из компаний по соблюдению требований PCI-DSS. Мы используем SecurityMetrics, и обычно банки предлагают скидки на них.

+0

полезные ссылки, но еще два предложения, чтобы объяснить, что это было бы полезно, поэтому не нужно следовать ссылке, чтобы увидеть, куда она идет –

+0

@DavidePiras спасибо, я должен был сделать это раньше. –

1

Ну, я бы заказать их выслать Вам исходный код и выполнить вид кода (или иметь один сделано относительно experiend разработчика.

+0

Я думаю, что возврат в порядке! –