在 Sinatra 中以 URL 参数发送原始数据是否存在 XSS 问题



我正在运行一个带有Sinatra/backbone的应用程序。

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

这会带来 XSS 问题吗?

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

一个快速测试是尝试 URL

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

如果脚本执行并出现警报弹出窗口,则XSS绝对是可能的。

其他 XSS 模式也是可能的,具体取决于name值的输出位置。

应输出编码以防止此类攻击。要使用的编码取决于输出的语言上下文(如果是JavaScript,HTML或CSS等)。例如 "在HTML中变得&quot;,但在JavaScript和JSON中x22。正确的编码可防止攻击者脱离上下文并注入自己的脚本。还应将字符集设置为 UTF-8,以防止某些 UTF-7 过滤器规避攻击。

不需要。完全取决于向用户显示数据的方式。如果您记住,该数据可能是错误的,例如输出前的转义字符串 - 它会没问题。

相关内容

最新更新