使用存储过程是否可以防止 SQL Injection/XSXX 攻击?

Does using stored procedures prevent SQL Injection/XSXX Attacks?

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

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

没有.

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

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

视情况而定

  1. SQL 注入 :避免在存储过程中使用 Dynamic SQL,因为它容易受到攻击,可以使用 SQL注入攻击,如果不可避免使用sp_executesql(如大牛的回答所述) Better Way

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