2016-05-02 2 views
0

Мне было интересно, если инъекции SQL по-прежнему являются возможной угрозой для обычных обычных веб-сайтов с параметризованным SQL. (ASP.NET - '@ 0').Есть ли инъекции SQL все еще угроза?

Если это все еще угроза, как бы крекеры переопределить или обойти эти параметры?

ответ

5

Согласно OWASP, это было до сих пор главной угрозой в 2013 году (вскоре после ASP.NET вышел): https://www.owasp.org/index.php/Top_10_2013-A1-Injection

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

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

+2

Я думаю, что стоит отметить, что использование параметризации правильно эффективно устраняет угрозы SQL-инъекции. Хакер не может не поддаваться параметризации. Ситуация, о которой вы описали, очень специфична тем, что программист более или менее удалил преимущества предварительно скомпилированных запросов. Действительно, но, вероятно, не то, о чем спрашивал ОП. – user2752635

+0

Интересно. Итак, SQL-инъекции в большей степени основаны на взломах? Спасибо за ответ :) –

+0

@ user2752635 Хотя, если содержимое строки может быть неверно истолковано как код, как можно избежать этого? –

4

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

Вот несколько причин, по которым инъекции все еще можно рассматривать как угрозу.

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

Это лишь некоторые из них. Помните, хотя, если вы собираетесь использовать базу данных SQL. Убедитесь, что вы рассматриваете уязвимости в своем проекте, прежде чем позволить публике использовать его.

Смежные вопросы