CodeQL 文档

反射型服务器端跨站脚本

ID: rb/reflected-xss
Kind: path-problem
Security severity: 6.1
Severity: error
Precision: high
Tags:
   - security
   - external/cwe/cwe-079
   - external/cwe/cwe-116
Query suites:
   - ruby-code-scanning.qls
   - ruby-security-extended.qls
   - ruby-security-and-quality.qls

点击查看 CodeQL 仓库中的查询

直接将用户输入(例如,HTTP 请求参数)写入网页,而没有事先对输入进行适当的清理,会导致跨站脚本漏洞。

建议

为了防止跨站脚本攻击,在将用户输入写入页面之前,请对其进行转义。一些框架,例如 Rails,默认情况下会隐式地执行此转义。

使用 html_saferaw 等方法时要小心。它们可用于在不进行转义的情况下发出字符串,并且只应在字符串已被手动转义(例如,使用 Rails 的 html_escape 方法)或内容已保证安全(例如,硬编码字符串)时使用。

示例

以下示例是安全的,因为输出标签中的 params[:user_name] 内容在发出之前会自动进行 HTML 转义。

<p>Hello <%= params[:user_name] %>!</p>

但是,以下示例是不安全的,因为用户控制的输入在没有进行转义的情况下被发出,因为它被标记为 html_safe

<p>Hello <%= params[:user_name].html_safe %>!</p>

参考

  • ©GitHub, Inc.
  • 条款
  • 隐私