如何保证 cookie 只能被 PHP 读取,而客户端 Javascript 脚本读取不了?

PHP setcookie 函数的最后一个参数 $httponly 为 true 时,cookie 只能被通过 http 协议读取,而不能被客户端脚本(包括 JS)读取。该选项有助于减少 XSS 跨站脚本攻击。

该选项从 PHP 5.2.0 开始被支持,并且不是所有的浏览器都支持这个特性。

既然不是所有的浏览器都支持这个特性,那么仅依靠这个特行来提升安全性就不那么靠谱了。其实,可以考虑将 cookie 加密,那么 Server 发送给 Client 的 cookie 就无法被客户端 JS 解密(因为 JS 不知道解密算法)。这就提升了安全性能。

说到 setcookie 函数,其实 $secure 这个参数项平时我们使用的也比较少,应该引起注意。这个参数表明是否仅仅允许通过 https 安全连接来传输这个 cookie 项。

你可能感兴趣的:(如何保证 cookie 只能被 PHP 读取,而客户端 Javascript 脚本读取不了?)