1

我想在我的网站上有一个“联系我们”,这样用户就可以在一个文本框中输入,当他点击“提交”时——它将被存储起来供我以后查看。

这里有注射的危险吗?

4

3 回答 3

1

可能是的,但这取决于您存储文本的位置。

例如,如果它位于 SQL 数据库中,则存在 SQL 注入的风险。您应该使用您所在环境的 SQL 转义函数。

例如,使用 php + mysql,您可以使用mysql_real_escape_string. 大多数技术环境都提供了一种在持久化之前正确转义字符串的标准方法。

于 2012-04-03T20:57:08.553 回答
1

注射可能发生在两个地方。

  • 当您在 html 页面中显示此输入时。
  • 当你保存它。

因此,如果将其保存为 sql 服务器,则使用变量/参数* 保存,如果将其保存在 xml 中,则使用 HtmlEncode 保存。

当您看到该数据时,如果您在 html 页面上看到它们,请使用HtmlEncode,如果您只是在文本文件中读取它,那么不用担心 :)

[*]如何:防止 ASP.NET 中的 SQL 注入

有关 html 编码和反跨站点脚本库的更多详细信息:

http://msdn.microsoft.com/en-us/security/aa973814

http://msdn.microsoft.com/en-us/library/ff649310.aspx

于 2012-04-03T20:59:25.797 回答
0

从安全的角度来看,我们的 Web 表单是赤裸裸的并且 100% 易受攻击。我们需要查看数据传递给它们的所有方式并进行适当的测试:

* Form Fields
* URL Query Strings
* Cookies
* Database
* ViewState

最普遍的攻击形式似乎是脚本注入、跨站点脚本和 SQL 注入。至于 SQL 注入,这可以通过使用参数化查询来缓解。正是将数据库查询参数化的行为使存储过程对攻击具有如此的弹性。其他形式的脚本攻击可以通过在您的 Web 应用程序项目中下载和使用 Microsoft Anti-Cross Site Scripting Library 来处理。

安全运行时引擎 VS AntiXSS 库

Microsoft Web 保护库

于 2012-04-03T21:07:58.270 回答