数据安全是将明文转换为密文的加密类。这通过使用 160 位密钥来加密纯文本块来确保数据机密性。密钥的强度 它非常高,要破解密钥,需要 ~2^160 次尝试,这是长度为 17 个数字的数字,而今天的处理器还不够强大,无法在短时间内破解这个密钥。
加密算法由此脚本的作者 Arlind Nushi 设计和发现,名为 ANCrypt。
安全Cookie
SafeCookie 在 ANCrypt 算法下实现,并确保:
- 数据保密
- 数据完整性
数据机密性 – 确保数据对拥有密钥和加密/解密算法的所有人隐藏。
数据完整性 – 保证保存在 Cookie 上的数据不会被其他用户更改或修改。如果数据被修改,则通过使用测试 Cookie 完整性的方法,您可以了解这一点。cookie 中的数据完整性非常重要,因为我们知道每个用户都有可能在自己的浏览器上更改 cookie,并且这些 cookie 会被您的网站读取。
也就是说,例如,如果您有一个 cookie 来检查用户是否已登录,并且在 cookie 上以以下形式保存用户访问权限:user_logged=false, user_privileges=normal_user。任何人都可以对这些 cookie 进行修改,因为它们易于理解,并且它们是网站上功能的含义。然后用户尝试并可以更改 user_logged=true, user_privileges=admin,这就是未受保护的 cookie 是您网站的弱点的原因。
但是使用 SafeCookie,Cookie 会以这种方式保存:
Cookie 名称的哈希值是使用 MD5 算法生成的,并使用该名称保存
Cookie 的值
value 的哈希是使用 MD5 生成的 – 用于数据完整性检查
然后,该 cookie 的哈希值和数据被连接起来
级联数据使用特定密钥通过 ANCrypt 进行加密
为了测试 cookie 数据完整性,这是验证任何 cookie 是否被更改(修改)并且不是您之前保存的 cookie 的流程。
- 首先,要检索 Cookie,您需要指定一个 Cookie 名称,该名称将被哈希处理以搜索该 Cookie 是否存在。
- 如果 cookie 存在,它会使用与加密相同的密钥解密该 cookie 的内容
- Cookie 分为两部分
- 包含保存的哈希值和 Cookie 内容的部分
- 为 cookie 的内容生成一个哈希值,并将与保存的 cookie 哈希值进行比较
如果值相同,则意味着 cookie 没有被更改,否则它将返回 false 值,这意味着 cookie 内容已被更改,并且处理该 cookie 由您掌握。
从 SafeCookie 处理并保存后,形式为 user_logged=true 的相同 Cookie,其形式如下:
cookie(名称:d688c4ccd7e20183b67f80d8816a2126,值:i1leWo1XUV1VgFCIS39UWEdKTlVLSEhBTUNEQHZyP0F7fntv)
而且很难弄清楚这个 cookie 的用途,但拥有密钥的用户确切地知道这个 cookie 的含义。
要求
建议使用 PHP 4.3 或更高版本