在URL params中发送Sinatra中的原始数据是否存在XSS问题?

时间:2014-04-07 14:52:18

标签: backbone.js parameters sinatra xss

我正在运行Sinatra / backbone的应用程序。

假设我访问了使用http://localhost:3000/cases/1/read?name=Some%20Guy参数的页面name来显示页面上的数据。

这会出现XSS问题吗?

我只是尝试通过按钮点击参数数据将数据从一个页面发送到另一个页面。

2 个答案:

答案 0 :(得分:1)

快速测试是尝试URL

http://localhost:3000/cases/1/read?name=<script>alert('foo');</script>

如果脚本执行并出现警告弹出窗口,则绝对可以使用XSS。

其他XSS patterns are possible too取决于输出name值的位置。

你应该output encode来防止这种类型的攻击。要使用的编码取决于输出的语言上下文(如果是JavaScript,HTML或CSS等)。例如"在HTML中变为&quot;,在JavaScript和JSON中变为\x22。正确的编码可防止攻击者逃离上下文并注入自己的脚本。您还应该将字符集设置为UTF-8以防止某些UTF-7 filter evasion attacks

答案 1 :(得分:0)

没必要。所有依赖于数据向用户显示的方式。如果你记住,那些数据可能是错误的,例如在输出之前转义字符串 - 它就可以了。