【问题标题】:Does using stored procedures prevent SQL Injection/XSXX Attacks?使用存储过程可以防止 SQL 注入/XSXX 攻击吗?
【发布时间】:2016-10-15 21:51:37
【问题描述】:

我正在 ASP.NET MVC C# 上开发一个 SaaS 应用程序,我很好奇使用存储过程/函数是否可以防止 SQL 注入和 xsxx 攻击?我想对用户输入的数据进行某种清理,但我不知道他们这样做的最佳方法是什么。

如果我需要进行一些数据清理,最好的方法是什么?

【问题讨论】:

    标签: c# sql asp.net sql-injection


    【解决方案1】:

    您应该通过使用SqlCommand 并将适当的参数添加到适当的连接来使用参数化查询。这将防止 SQL 注入。您不能保证所有途径都会受到保护,例如,如果您使用来自用户字符串的 sp_executesql

    SQL 注入和 XSS 攻击是不同的问题。

    【讨论】:

    • 所以我不需要做任何正面擦洗?只要我使用参数和适当的存储过程,我就不会受到 sql 注入的保护?
    • 是的,但它不能解决 XSS,这完全是一个单独的问题。
    【解决方案2】:

    视情况而定

    1. SQL 注入:避免在存储过程中使用动态 SQL,因为它容易受到攻击,并且可以使用 SQL 注入攻击来滥用,如果不可避免,请使用 sp_executesql(如 Daniel 的回答中所述) Better Way

    2. XSS:对于旧版本的 MVC(aspx 视图引擎),始终使用 <%: ... %>,这与 Html.Encode() 相同。对于 @Razor 视图,@model.something 始终默认情况下自动编码,除非您专门使用 HTML.RawNice Read

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-20
      • 2013-04-18
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多