我在后端创建了一个带有 asp.net 3.5 和 SQL Server 2005 的网站
我们创建了管理站点,用于使用安全用户帐户更新数据库中的数据。我为生活工作了一段时间。
一段时间后,我们发现一些特定html
的标签被插入到数据库的字符串字段中。
似乎是某种攻击
任何人都可以建议我如何防止这种攻击。
我在后端创建了一个带有 asp.net 3.5 和 SQL Server 2005 的网站
我们创建了管理站点,用于使用安全用户帐户更新数据库中的数据。我为生活工作了一段时间。
一段时间后,我们发现一些特定html
的标签被插入到数据库的字符串字段中。
似乎是某种攻击
任何人都可以建议我如何防止这种攻击。
您所拥有的可能是用于部署跨站点脚本攻击的 SQL 注入攻击。然而,这可能不是来自 asp.net 应用程序本身。默认情况下,ASP.NET Web 应用程序将打开请求验证,从而阻止可能看起来是跨站点脚本攻击的帖子(它们将在发布 HTML 时收到“危险的请求 500 错误”)。如果您已将其关闭,那么您可能正在暴露自己。
您应该使用像 LINQ to Entities 这样的 ORM,或者至少对正在执行的任何 SQL 查询使用参数化查询,这将大大有助于保护您免受 SQL 注入攻击。但是,您仍然遇到跨站点脚本的问题。查看 Microsoft AntiXSS 库以确保您受到保护。
您将遇到的另一个问题是内部人员或通过可能插入数据库的另一个应用程序(如果您将其用作公共数据库)。为此,您可以做的最好的事情是放置一个检查约束,当您在正则表达式上匹配 HTML 时会失败。查看这篇文章的详细信息。
您应该始终对来自用户的任何输入进行编码,以防止跨站点脚本和 SQL 注入攻击。Server.HtmlDecode 和 Server.HtmlEncode 正是出于这个原因。
最重要的是,如果您想完全阻止 Html 标签,请使用正则表达式清除不需要的标签的输入。