php - 当对用户数据进行匿名化时,伪随机就足够了吗?

标签 php security

我正在构建一个保存学生记录的系统。为了最大限度地减少潜在数据泄露的影响,并减少信息自由请求所需的工作,我们将在一段时间后对所有用户帐户进行匿名化。

我对用户帐户进行匿名化处理的步骤之一是将用户名替换为 __anon__ + 12 个随机字符。

从安全角度来看,我可以只使用 PHP 的 *_rand() 函数还是必须使用更适合加密的东西?

我不认为 *_rand() 函数可以创建一个匿名随机字符串,该字符串可以以某种方式用于识别原始用户名的帐户信息 - 但我想我会这么问以防我遗漏了什么。

最佳答案

rand 或任何其他函数的随机程度实际上并不重要。关键是您正在用另一个名称替换实际名称,并且这个新名称是通过与原始名称完全无关的方法派生的。换句话说,您没有使用原始名称作为 rand 函数的输入,因此没有任何东西将原始名称与新的伪随机名称连接起来。您可以为每个用户使用递增计数器,这与断开原始名称与新替换名称的连接具有相同的效果。

您当然应该使用系统上可用的最佳 PRNG,在 *NIX 系统上通常为 /dev/random。但是,为了让任何人能够将随机生成的字符串与任何其他数据连接起来,就必须存在某种连接。比如说,如果攻击者知道你匿名化哪些数据的精确方法和时间以及以什么顺序,并且攻击者也知道你匿名化的原始数据,那么理论上可以将随机生成的名称与原始已知数据连接起来。但这是非常理论化的,可能与实践无关。

关于php - 当对用户数据进行匿名化时,伪随机就足够了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23370855/

相关文章:

php cookie 和 session 变量和 ip 地址

php - 实体选择列表形式的其他

php - 如何通过 Accept : application json header in call, 发布请求 Laravel 5.1

java - 如何向 Java Web 应用程序添加 Windows 安全对话框

android - Frida - 列出 Android 进程

php - Ajax 内容和 Css 定位

security - tomcat 漏洞 : JSP Upload Bypass CVE-2017-12617 的有效利用

java - SignerID 转换为 BouncyCasSTLe 库中的 X509CertSelector

security - 使用自定义(不变) key 的 AES 加密是否足够安全?

php - 如何在任何 URL(访问/页面加载)中显示 "daily hits"?