考虑CSRF,XSS,SQL注入等问题......
网站:ASP.net,SQL Server 2012
我正在阅读MS的一个旧页面:https://msdn.microsoft.com/en-us/library/ff649310.aspx#paght000004_step4
如果我有一个参数化查询,并且我的一个字段用于保存HTML,那么在某些标签上进行简单替换是否可以解决问题?
例如,用户可以键入 WYSIWYG textarea,使某些内容变粗,或者创建项目符号等。
我希望能够显示SELECT查询的结果,所以即使我HTMLEncoded它,它也必须是HTMLDecoded。
循环查看方案列表的UDF怎么样?我很好奇处理那个页面上提到的看似偷偷摸摸的最好方法:
引用:
攻击者可以使用HTML属性(如src,lowsrc,style和href)与前面的标记一起注入跨站点脚本。例如,标记的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>
最终有两个问题:
答案 0 :(得分:7)
- 从INSERT语句本身处理此问题的最佳方法。
醇>
无。那不是你应该去的地方。
- 从代码隐藏处理此问题的最佳方法。
醇>
使用白名单,而不是黑名单。 HTML对所有内容进行编码,然后解码允许的特定标记。
能够指定一些可以安全使用的标签是合理的,但是能够捕获所有可能的漏洞是不合理的。
答案 1 :(得分:0)
如果存储在SQL Server中,哪些HTML标记会被视为危险?
无。 SQL Server不理解,也不尝试解释HTML标记。 HTML标记只是文本。
但是,如果输出到HTML页面,HTML标记可能会很危险,因为它们可能包含脚本。
如果您希望用户能够输入富文本,则应考虑以下方法:
&
到&
等)。请注意,这些都应该在输出点完成。存储文本&#34;按原样#34;在数据库中,只需在输出到页面时编码并处理正确的格式。