这段代码容易受到XSS的攻击吗? (表单自动发布)

时间:2011-09-08 16:55:47

标签: javascript html xss

我有一些JavaScript检索用户提交的查询字符串值,为参数设置隐藏字段的VALUE,然后自动发布表单。

这一切都是在页面加载时完成的。 XSS有可能吗?

<script>
    function autoSubmit(){
        var url = ... /* retrieve URL from querystring parameter */
        document.getElementById("txt").value = url;
        document.getElementById("myform").submit();
    }
</script>
<!-- ...... --->
<body onload="autoSubmit()">
<form id="myform" name="myform" method="POST" action="http://www.mysite.com/someform.php">
 <input id="txt" name="txt" type="hidden" value="" />
</form>
</body>

2 个答案:

答案 0 :(得分:1)

没有。您没有在任何地方执行远程代码,并且您不允许用户输入自己的标记。 但你确定你关心XSS吗?

对于通常的XSRF原因,该网站可能容易受到某种形式的XSRF的影响:

  • 我正在假设(因为你提到了查询参数)你正在通过HTTP GET加载这个页面,但它直接导致POST(可能)以某种方式修改数据。用户可能会被欺骗点击带有邪恶参数的链接(sessionstealing?)
  • 再说一遍:假设您没有采取任何其他预防措施,从远程位置发布可能会产生同样的效果。

更深入的分析需要查看你的someform.php

答案 1 :(得分:-1)

来自客户端的任何输入都容易受到xss的攻击。使用FireFox海报可以轻松绕过任何在客户端避免此问题的代码(隐藏输入等)。

我不认为你在这里有什么(将querystring参数变成变量然后通过表单数据提交)特别容易受到XSS的攻击,因为利用它会以某种方式只允许恶意用户搞乱他们自己的视图呈现(在哪种情况下,谁在乎?)。我能想到url参数的特定值会破坏页面的呈现吗?不,有可能吗?我不知道......但没关系。

没关系,因为这不是XSS发挥作用的地方。执行表单帖子的单个用户不会表现出XSS漏洞。当有问题的输入参数的值被呈现到恶意用户以外的用户可以看到它的地方时,它们就成了问题。因此,这是否暴露XSS漏洞完全独立于您在此处提供的代码。这取决于您对表单中的post参数执行的操作以及如何在整个站点中呈现该值的内容。