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