3

这个页面上它说

htmlspecialchars()可以在打印 SID 时使用,以防止与 XSS 相关的攻击。

如果您在不使用的情况下打印 SID,那么有人会进行什么攻击htmlspecialchars()

会话 ID 只能包含数字和字母。我错过了什么吗?

4

1 回答 1

6

会话 ID 通常存储在客户端(例如,在 cookie 或GET参数中),因此可以通过某些脚本甚至通过更改 URL 来更改它。

现在想象有人能够更改 cookie 并更改SID为一些 JS 代码将您重定向到其他地方。如果您将在页面上打印该值而不进行转义,则每次都会重定向用户,除非他清除 cookie 或禁用 JavaScript。

换句话说,会话 ID 是从客户端获取的并且是不安全的(除非您将使用其他机制来确保它不被更改,例如 cookie 签名,包括在某些 PHP 框架中),因此您不能相信它不包含某些内容有害。

这与构造 SQL 查询时不能安全使用此值的原因相同(因此 SID 也是可能进行 SQL 注入的地方)。

于 2012-09-06T02:03:52.490 回答