2010-10-14 81 views
2

我的公司有合作伙伴通过动态生成的iframe将我们的一些网页嵌入到他们的网站中。 iframe的源URL来自合作伙伴网站上的查询字符串,因此我想确保不存在发生跨站点脚本攻击的风险,因为我们将不可信输入用作iframe的源代码。使用Javascript的CreateElement时防止XSS攻击

源URL始终是一个相对URL(我们的主机名在Javascript中被硬编码并被预先添加到相对URL中),我们对输入URL进行了一些验证以确保它以“index.php”开头,因为所有请求都会通过我们网站上的该页面发送。例如,如果下面的网址是在客户端站点访问:

www.ourpartner.com/home.html?url=index.php%3Fid%3D999 

的IFRAME的源URL将http://www.oursite.com/index.php?id=999。 iframe中使用的createElement Javascript中生成的,如下:

... 
// We assign the url value from the query string to the variable urlparam 

if(! urlparam.match(/^index\.php/i)) { 
    // Error. Quit. 
} 
var myiframe = document.createElement('iframe'); 
myiframe.src = 'http://www.oursite.com/' + urlparam; 
document.getElementById('iframe_container').appendChild(myiframe); 

是否有任何蔡斯攻击者可以注入恶意网址为iframe的来源是什么?浏览器似乎会转义任何可能出现在URL中的HTML实体,例如双引号和左/右尖括号。我们是否应该采取进一步的预防措施与URL?

谢谢!

回答

3

不,这没关系。

当您处理DOM属性如.src时,不涉及标记。您正在将字符串直接写入字符串属性。如果将值封装在标记中,则只需要担心HTML转义,例如在写入innerHTMLdocument.write()时。

+0

我以为是这样,但想确保。谢谢你的帮助。 – 2010-10-14 17:44:59