使用document.write来显示window.location.search不安全/易受xss攻击?

时间:2013-09-13 16:11:33

标签: javascript security xss

我有一个页面,我想简单地将查询字符串传递给另一个页面。没有可用的服务器端编程,只有这个特定客户端的HTML(我只能使用javascript / jquery)。他们有一个流程,他们希望将一些参数传递给定价页面,如下所示:

http://www.mydomain.com/pricing.html?affiliate=123&store=345

在定价页面上,我想要做的就是收集完整的查询字符串(?affiliate = 123& store = 345)并将其传递到应用程序页面:

http://www.mydomain.com/application.html?affiliate=123&store=345

如果我使用以下javascript作为定价页面上的链接将它们传递到应用程序页面,我是否会介绍任何类型的跨站点脚本或其他漏洞?

<script type="text/javascript">document.write('<a href="http://www.mydomain.com/application.html'+location.search+'">Apply Now</a>');</script>

2 个答案:

答案 0 :(得分:2)

是的,你很容易受到XSS的攻击。

$("<a>").attr("href", 'http://www.mydomain.com/application.html'+location.search).text("Apply now").appendTo(document.body)

答案 1 :(得分:0)

简短回答,您没有引入任何尚未存在的漏洞(因为您已经通过查询字符串将该信息传递到定价页面)。

更长的答案,取决于您对application.html页面中的信息的处理方式。如果您允许在查询字符串中传递的变量更改状态或访问服务器上的受保护信息,或者将它们输入到例如没有验证的SQL查询,是的,您正在引入漏洞。但这不会仅仅通过使用不同的方法来传递参数(即POST)而改变 - 这是您获得数据后如何验证和使用数据的特征。