我有一个允许用户注册活动的应用程序。数据库(SQL Server)具有名称,电子邮件地址,地址和电话号码。
我通过查询字符串传递id信息(例如event.aspx?id=____
)。目前我正在使用NEWID()
提供的“唯一”标识符,性能非常好。
我在辩论这是否是一种相当安全的方法。我应该加密id值并将其传递给查询字符串吗?例如,不是使用NEWID
生成唯一ID,而是使用主键列中的整数值,并根据应用程序的需要对其进行加密和解密。
我已经做到这一点,并注意到性能受到了打击。有什么想法吗?
答案 0 :(得分:0)
传递匿名密钥完全没问题。更多的风险是SQL注入攻击,但如果您采取预防措施(例如使用存储过程,参数化SQL等等),您应该没问题。
答案 1 :(得分:0)
如果有人可以更改id
的值并仍然注册(从而更改/查看其他人的注册信息),那么是的,您有问题。
如果您确保某人只能修改自己的注册,那么您可能没有问题。在这种情况下,您仍然可以使用SQL ID列而不是生成NEWID()
(未加密 - 如果他们知道ID,那么威胁是什么?)。如果只有正确的人可以修改/注册,那么揭示ID不应该是一个问题。虽然我很好奇为什么简单的加密/解密会对性能产生负面影响。