【问题标题】:Mysqli - Are parameterized queries enough for preventing XSS second order attacks?Mysqli - 参数化查询是否足以防止 XSS 二阶攻击?
【发布时间】:2014-09-18 15:00:50
【问题描述】:

我正在开发一个动态应用程序,但我不确定参数化查询是否可以免受 XSS、二阶攻击?你能帮助我吗?谢谢!

我以这段代码为例:

$stmt = $mysqli->prepare("INSERT INTO tb (1, 2, 3, 4, 5, 6, 7) VALUES (?, ?, ?, ?, ?, ?, ?)"); $stmt->bind_param('sssssss', $1, $2, $3, $4, $5, $6, $7); $stmt->执行(); $stmt->关闭();

【问题讨论】:

    标签: mysqli prepared-statement xss sql-injection sql-parametrized-query


    【解决方案1】:

    没有。

    参数化查询可防止 SQL 注入;也就是说,它确保查询参数在 SQL 后端处理之前格式正确并正确转义。

    XSS 是一类不同的问题,输入应该被清除 HTML 标记;鉴于正确参数化的 SQL 值仍然可以包含标记,您需要额外的编码(例如 htmlspecialchars())。

    【讨论】:

    • 谢谢亚历克斯!那么 htmlspecialchars() 就够了吗?
    • XSS和二阶攻击是一回事吗?
    • 2nd order 是一种 XSS 攻击(适用于存储受损数据的类型)
    【解决方案2】:

    绝对不是。

    请不要自行实施 XSS 用户清理。

    请为此使用专门的单独库。你永远无法抓住所有的极端情况。

    Here 列出了您需要应对的一些极端情况。

    【讨论】:

      猜你喜欢
      • 2019-12-11
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      相关资源
      最近更新 更多