首页 > 解决方案 > 如何在服务器端防止href属性的xss?

问题描述

在我的网站(服务器端是 c#)中,我让用户提交这样的链接:

<a href="$">link text</a>

无论他们输入什么,都只会保留在“href”属性中。我想通过“href”URL 阻止 XSS。

现在我检查它是否是 c# 对象 URI 的有效 url。

我的问题是:

  1. 使用 URI 验证 url 是否足以防止 url xss?
  2. 如果没有,我应该如何防止这种xss?

例如,如何防止对有效 url 的 XSS 网络钓鱼攻击:“ http://xss.rocks/xss.css

标签: c#asp.net.netsecurityxss

解决方案


验证为 URI 是一个好的开始。之后,验证是否scheme是白名单选项,例如http/ https。之后,确保在输出之前对其进行编码(参见 OWASP 链接)。基本上,您完全按照您对任何 html 属性编码所做的操作,除了您还需要注意恶意方案。

需要注意的事项:(javascript:alert(1);验证方案),https://example.com?xss=" onclick=alert(1);//(转义输出)。

看:

至于您问题的第二部分,一旦用户单击链接并转到新站点,它就不再是您站点上的 XSS 了。让用户添加任何 URL 仍然是危险的,即使它不是 XSS 漏洞。他们仍然可以链接到恶意网站、非法内容等。对于这些,您也许可以根据Google 提供的网站声誉 API进行验证,但即使这样也不是万无一失的。


推荐阅读