无需 HTML 编码即可安全地呈现 HTML
假设您希望允许非技术用户控制公共网站/应用程序上显示的内容。如果内容只是文本,那么您可以在显示文本时对文本进行 HTML 编码,以防止恶意脚本进入您的数据库后被执行。
当您想要将数据显示为 HTML 时(即,当通过 WYSIWYG 编辑器输入数据时),有哪些选项可以防止出现这种情况?每次我想显示数据时,是否都必须用黑名单来清理数据?
另外,假设数据已经被泄露。当 HTML 编码不可行时,我确实正在寻找限制此类攻击造成的损害的方法。
出于我的目的,该站点运行 ASP.NET MVC 3,并且我正在使用 jQuery。
Assume you want to allow non-technical users to control content that appears on a public site/app. If the content is merely text, then you can HTML encode the text when you display it to prevent malicious scripts from being executed should they get into your database.
What options are available to prevent this scenario when you want to display the data as HTML (i.e. when the data is entered through a WYSIWYG editor)? Am I going to have to clean the data with a blacklist every time I want to display it?
Also, assume that the data has already been compromised. I am really looking for ways to limit damage from this sort of attack when HTML encoding is not an option.
For my purposes, the site is running ASP.NET MVC 3 and I am utilizing jQuery.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您始终可以将元素和属性名称列入白名单,而不是列入黑名单。 .NET HTML 白名单(反 xss/跨站脚本) 讨论将 .NET 的 HTML 清理程序列入白名单。
其他选项包括将内容加载到一次性域中的 iframe 中,但这不会阻止内容执行某些类型的攻击 - 重定向到网络钓鱼页面、开始下载恶意软件、扫描本地网络、利用 XSRF 漏洞用户的凭据等
You can always whitelist elements and attribute names instead of blacklisting. .NET HTML whitelisting (anti-xss/Cross Site Scripting) discusses whitelisting HTML sanitizers for .NET.
Other options include loading the content in an iframe in a throwaway domain, but this will not stop the content from performing certain kinds of attacks -- redirecting to a phishing page, starting downloads of malware, scanning the local network, exploiting XSRF vulnerabilities using the user's credentials, etc.