2013-04-22 72 views
0

我有一个数据库支持的Web应用程序。我需要这个功能:在网络应用程序中如何处理这个问题?

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

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

但是,这不会很安全,因为有人可以尝试使用生成的ID发送请求。

什么是最好的方法来保证这一点?

谢谢你的帮助!

J

+0

你需要服务器端的访问控制。 – SLaks 2013-04-22 14:56:26

+0

请您详细说明一下吗?谢谢! – user2011931 2013-04-22 14:58:53

+0

您的服务器需要检查登录用户是否允许执行此操作。 https://en.wikipedia.org/wiki/Access_control – SLaks 2013-04-22 14:59:11

回答

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

0

使用randomly generated UUIDs (tokens)

  1. 几乎将保证不会有可预测的序列

  2. 不能重播,即令牌只能一次性使用。一旦请求http://server.com/update?token=mxyzptlk,该关键值不应该是可重复使用的

  3. 不能以任何方式进行反向设计。与加密值不同的是,一旦加密值的来源材料或加密密钥受到损害,这些加密值就会受到威胁UUID不可预测。 AFAIK,他们也不容易逆向工程。

  4. 他们是比较琐碎生成和低处理开销(取决于您的平台反正)