我的页面网址如下:https://site.com/page.aspx?QSVariableName=Value
我们的安全团队已经提出了一个漏洞,声明如果Value部分注入可执行JS,则类似于:
https://site.com/page.aspx?QSVariableName=Value%27%2balert%281234567890%29%2b%27(相当于传递值'+警报(1234567890)+')
然后 1234567890 从我在使用Value的页面上的超链接的OnClick事件中收到警报。
就像我说的,这不是我故意做的事情,但在代码中被识别为漏洞。所以问题是,我如何确保QSVariableName仅使用Value并忽略不必要的代码(现在只保留给JS)?
我想到的复杂性是QSVariableName可能包含任何JS代码,而不仅仅是alert()。它可以出现在任何地方,而不仅仅是最后。有没有办法识别嵌入在字符串中的JS可执行代码?
如果Value是一个错误的'字符串',只要它不包含任何可执行文件就可以了。
答案 0 :(得分:0)
如果您使用QSVariableName
模式选择基于onclick
的函数,而不是将switch/case
直接放入QSVariableName
属性,该怎么办?您还可以使用关联数组将适当的查询字符串映射到适当的函数。无论哪种方式,您只需将QSVariableName
视为字符串,并且只在onclick
事件中使用安全且预先批准的JS。缺点是,任何试图将JS注入查询字符串的人都会收到错误,但是他们试图破解你的网站...他们的用户体验会受到相应的影响。
如果没有看到更多的代码,我不确定我能否找到更好的答案...