2012-06-14 50 views
1

我正在开发一个使用ASP.NET MVC 3的网站,现在我需要加密我的客户的URL的ID。例如:ASP.NET MVC - 加密URL

http://mysite.com/person?id=42 

到类似的东西:

http://mysite.com/person?id=Dfjhasdfh33kASDG868365çkhg54sdSDFD 

它不必是安全的。 当我说安全,这意味着很难任何人发现正确的ID

有没有任何图书馆要做到这一点?

许多安全的网络付款的再一个像贝宝使用了这种类型的方法: https://paypal.com/br/webscr?info=CNS9tFsVM_tv4c18gHgZ3OMH2zblN7GWDQoyamVF3mzNh7vGDuhiKU3

+1

定义项目的“安全”范围。 –

+0

试试这个帖子,并hopfully它会回答你的问题http://stackoverflow.com/questions/6157150/mvc3-encrypted-querystring-parameters – Brian

+1

这个用户ID代表什么?它是当前用户吗?为什么它需要安全?如果没有加密会发生什么? –

回答

1

如果您真的想要加密查询参数,它非常简单,只需使用.Net提供的任何加密器,然后使用属性或httpmodule来解密参数。

最重要的是始终验证请求。如果您可以使用防伪造标记进行POST,请执行此操作。然后,如果该用户有权访问受保护的资源,请始终检查用户凭据。

这并不难,但你必须慢慢采取,并处理你可以想到的每一个场景。使用白名单方法:只有符合条件的人才被允许。

1

一个办法是让你的PK的,长期使用随机生成的字符串或唯一标识符(GUID)。

+0

但是,对于那些GUID的查询需要很长时间。 –

+0

现在可以生成顺序的GUID,因此PK友好。如果顺序意味着它们有点“可预测”并且不可接受,那么可以为此GUID添加一个代理键列,并使用非聚集索引。 – HackedByChinese