哪个更好的NEWID或加密ID?

时间:2014-01-08 14:40:53

标签: asp.net sql sql-server encryption

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

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

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

我已经做到这一点,并注意到性能受到了打击。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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