我正在运行Sinatra / backbone的应用程序。
假设我访问了使用http://localhost:3000/cases/1/read?name=Some%20Guy
参数的页面name
来显示页面上的数据。
这会出现XSS问题吗?
我只是尝试通过按钮点击参数数据将数据从一个页面发送到另一个页面。
答案 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中变为"
,在JavaScript和JSON中变为\x22
。正确的编码可防止攻击者逃离上下文并注入自己的脚本。您还应该将字符集设置为UTF-8以防止某些UTF-7 filter evasion attacks。
答案 1 :(得分:0)
没必要。所有依赖于数据向用户显示的方式。如果你记住,那些数据可能是错误的,例如在输出之前转义字符串 - 它就可以了。