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