我有一个 url 参数,可以是: “http://www.example.net” 或者: javascript:alert(document.cookie)
如果我使用encodeURIComponent来避免xss攻击,那么合法的url就会被破坏,如果我使用encodeURIComponent,则不会处理xss攻击(冒号通过)。避免 xss 攻击并保持 url 有效的最佳方法是什么?
最佳答案
据我所知,有两个主要选项:
您可以创建允许参数的白名单,并且不必费心对传递的实际 url 进行任何实际操作。换句话说,您可以执行类似
?url=example
的操作,并将其重定向到http://www.example.com
(如果它位于白名单中)。需要明确的是,这些是别名,而不是您仅假设站点的前缀和顶级域名的规则。这有助于确保您不易受到open-redirects的影响。和 XSS。如果维护这样的列表不可行,您可以制定一条规则,规定只能使用某些域(可能与网站相同的域)。至少你可以验证该方案是
http|https
,但你仍然容易受到开放重定向的攻击,但至少他们无法通过该参数对你的页面进行XSS攻击。
关于javascript - 用js处理url中的xss,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32205173/