如何在Web应用程序中处理此问题?

时间:2013-04-22 14:54:44

标签: web-services web security

我有一个数据库支持的网络应用程序。我需要这个功能:

有一个包含行的表,我需要生成一个URL。如果用户点击了URL(例如包含在电子邮件中),则会针对特定ID更新列值。

我知道我可以创建一个链接,比如http://server.com/update?id=30303030&newvalue='dxckdk';

但是,由于有人可以尝试使用生成的ID发送请求,因此这不会非常安全。

获得此权利的最佳方法是什么?

感谢您的帮助!

Ĵ

2 个答案:

答案 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)

  1. 几乎可以保证没有可预测的序列

  2. 无法重播,即代币仅供一次性使用。请求http://server.com/update?token=mxyzptlk后,该密钥值不应重复使用

  3. 无法以任何方式进行逆向工程。与加密值不同,一旦源材料或加密密钥被泄露,可能会受到损害。 UUID是不可预测的。 AFAIK,他们也不容易受到逆向工程的影响。

  4. 它们生成起来相对微不足道,并且处理开销很低(取决于您的平台)