在这个页面上它说
htmlspecialchars()
可以在打印 SID 时使用,以防止与 XSS 相关的攻击。
如果您在不使用的情况下打印 SID,那么有人会进行什么攻击htmlspecialchars()
?
会话 ID 只能包含数字和字母。我错过了什么吗?
会话 ID 通常存储在客户端(例如,在 cookie 或GET
参数中),因此可以通过某些脚本甚至通过更改 URL 来更改它。
现在想象有人能够更改 cookie 并更改SID
为一些 JS 代码将您重定向到其他地方。如果您将在页面上打印该值而不进行转义,则每次都会重定向用户,除非他清除 cookie 或禁用 JavaScript。
换句话说,会话 ID 是从客户端获取的并且是不安全的(除非您将使用其他机制来确保它不被更改,例如 cookie 签名,包括在某些 PHP 框架中),因此您不能相信它不包含某些内容有害。
这与构造 SQL 查询时不能安全使用此值的原因相同(因此 SID 也是可能进行 SQL 注入的地方)。