【发布时间】:2015-07-06 13:22:40
【问题描述】:
考虑 CSRF、XSS、SQL 注入等问题...
网站:ASP.net,SQL Server 2012
我正在阅读 MS 的旧页面:https://msdn.microsoft.com/en-us/library/ff649310.aspx#paght000004_step4
如果我有一个参数化查询,并且我的一个字段用于保存 HTML,那么在某些标签上进行简单替换是否可以解决问题?
例如,用户可以在 WYSIWYG 文本区域中输入内容、将某些内容加粗或创建项目符号等。
我希望能够显示 SELECT 查询的结果,所以即使我对它进行 HTMLEncoded,它也必须是 HTMLDecoded。
循环遍历场景列表的 UDF 怎么样?我很好奇处理该页面上提到的看似偷偷摸摸的最佳方法:
引用:
攻击者可以将src、lowsrc、style、href等HTML属性与前面的标签结合使用来注入跨站脚本。例如,标签的 src 属性可以是注入源,如下例所示。
<img src="javascript:alert('hello');">
<img src="java
script:alert('hello');">
<img src="java
script:alert('hello');">
攻击者还可以使用<style>标签通过更改MIME类型来注入脚本,如下所示。
<style TYPE="text/javascript">
alert('hello');
</style>
所以最终有两个问题:
- 在 INSERT 语句本身中处理此问题的最佳方法。
- 从代码隐藏处理此问题的最佳方法。
【问题讨论】:
-
在将字符串存储到数据库之前对其进行编码
-
我建议使用HTML Agility Pack 来帮助解析您的HTML,并且您应该清理输出而不是输入。
标签: javascript asp.net sql-server security database-security