什么';呼应SID很危险


What's dangerous about echoing the SID

这个页面上显示

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

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

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

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

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

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

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