我有一个数据库支持的网络应用程序。我需要这个功能:
有一个包含行的表,我需要生成一个URL。如果用户点击了URL(例如包含在电子邮件中),则会针对特定ID更新列值。
我知道我可以创建一个链接,比如http://server.com/update?id=30303030&newvalue='dxckdk';
但是,由于有人可以尝试使用生成的ID发送请求,因此这不会非常安全。
获得此权利的最佳方法是什么?
感谢您的帮助!
Ĵ
答案 0 :(得分:0)
您可以尝试对查询字符串值使用加密。这样,没有人可以改变数据,没有人能够获得你在querystring中发送的内容。这个技巧有加密/解密开销的缺点,但它是安全的。
我喜欢这种方法,因为它可以链并且支持加密和普通查询字符串 http://weblogs.asp.net/bradvincent/archive/2008/10/27/helper-class-querystring-builder-chainable.aspx
http://www.codeproject.com/Articles/25719/Query-string-encryption-for-ASP-NET
答案 1 :(得分:0)
使用randomly generated UUIDs (tokens)
几乎可以保证没有可预测的序列
无法重播,即代币仅供一次性使用。请求http://server.com/update?token=mxyzptlk后,该密钥值不应重复使用
无法以任何方式进行逆向工程。与加密值不同,一旦源材料或加密密钥被泄露,可能会受到损害。 UUID是不可预测的。 AFAIK,他们也不容易受到逆向工程的影响。
它们生成起来相对微不足道,并且处理开销很低(取决于您的平台)