Php 加密记录的ID

Php 加密记录的ID,php,security,encryption,uniqueidentifier,Php,Security,Encryption,Uniqueidentifier,在这个网站上,我们有ids用于类别。这些基本上是类别表的主键。它们是连续的和自动递增的 此id作为隐藏字段、会话值等在后台传递给站点。每当提交表单或完成某些数据库更新等时,都会验证id,以确保其未被篡改 $id = $this->getPostField(cat_id); $id = validate($id); //perform checks on the id field 我可以加密/解密id,这样即使有人查看隐藏字段,他也无法真正理解其值。然而,我的问题是——这真的有必要吗?还

在这个网站上,我们有
id
s用于
类别
。这些基本上是
类别
表的
主键。它们是连续的和自动递增的

id
作为隐藏字段、会话值等在后台传递给站点。每当提交表单或完成某些数据库更新等时,都会验证
id
,以确保其未被篡改

$id = $this->getPostField(cat_id);
$id = validate($id); //perform checks on the id field 
我可以加密/解密id,这样即使有人查看隐藏字段,他也无法真正理解其值。然而,我的问题是——这真的有必要吗?还是我只是增加了一层复杂性,只会增加开销而不会增加太多附加值

$id = $this->getPostField(cat_id);
$id = validate(keyDecrypt($id)); //perform checks on the decrypted id field

我想我之所以问这个问题是因为身份证不是一个非常敏感的数据,比如信用卡或社会证号码。如果用户读取隐藏字段,那么用户是否能够看到它并不重要。只要我在后端验证它,我就认为我应该很好(?)

您也可以向每个类别添加一个uniqid,并检查
id+uniqid
是否链接到一个类别。例如,这个uniqid甚至可以是slug

但这看起来像是一种开销,如果有人真的不想在客户端更改某些内容,这仍然是可能的。只要您检查服务器端,就可以了。当您在会话中保存它时,它非常快速和简单

正如上面在评论中所说的,它是通过隐蔽性实现的安全性,如果攻击者真的不想保护你,它也不会保护你很长时间


由您决定是否使用
id
、另一个字段或对其进行加密。。。(您也可以散列它,因为ID存储在会话中:-)

< p>我不认为这种安全通过默默无闻。< /P> 如果有人看到隐藏字段,他就无法真正理解其值

首先,没有什么需要理解的
id
本身没有任何有用的信息,它只是引用一个特定的记录


然而,由于它是一个自动递增的整数,它会公开诸如有多少个类别之类的信息。使用密钥对
id
s进行加密会使该元信息保密,并使用定义良好的密钥:加密密钥。这不是默默无闻的安全,因为即使人们知道确切的方案,他们仍然无法在没有密钥的情况下计算类别数。

我认为这有助于我们。。您是否熟悉“安全通过”一词obscurity@kingkero你熟悉“为什么不给出一个完整的答案”这个词吗?@Aminul-谢谢你的链接。我想我可以找到一种加密/解密的方法。但是,如果我在后端正确地检查id,那么我是否加密该号码真的很重要吗?我的意思是,它不是电子邮件/密码/信用卡号码或任何如此重要/敏感的数据。@open_sourse-不,这并不重要。如果有人能得到这个id,他/她就能理解为什么需要它以及它属于哪个表。谢谢你的回答!