哪个更好 新ID或加密ID



我有一个允许用户注册事件的应用程序。数据库 (SQL Server) 具有名称、电子邮件地址、地址和电话号码。

我通过查询字符串传递 id 信息(例如 event.aspx?id=____ )。目前,我正在使用NEWID()提供的"唯一"标识符,性能很棒。

我正在争论这是否是一种相当安全的方法。我应该加密 id 值并将其传递到查询字符串中吗?例如,我不是使用 NEWID 生成唯一 id,而是获取主键列中的整数值,并根据应用程序中的需要进行加密和解密。

我已经这样做了,并注意到性能受到影响。有什么想法吗?

传递匿名密钥是完全可以的。 更大的风险是SQL注入攻击,但是如果您正在采取预防措施(例如使用存储过程,参数化SQL等),您应该没问题。

如果有人可以更改id的值并且仍然注册(从而更改/查看其他人的注册信息),那么是的,您有问题。

如果您确保一个人只能修改自己的注册,那么您可能没有问题。在这种情况下,您仍然可以使用 SQL ID 列,而不是生成NEWID()(未加密 - 如果他们知道 ID 会有什么威胁?如果只有正确的人可以修改/注册,那么透露ID不应该是一个问题。虽然我很好奇为什么简单的加密/解密会对性能产生负面影响。

最新更新