2012-08-15 51 views
0

我建立一个.net应用程序,有效地有新闻报道,其中一些可以公开了,有些则是只有当你已经登录使用。查询字符串传递的加密ID

的URL给每个文章需要以某种方式包含文章的ID,直到现在我一直使用AES加密文章ID,使用用户ID作为'共享密码'和8位数字字符串作为盐。

例如/article.aspx?id=EvEAAAACtp2iEc7lKyJSu6382Ryl4k571L5/PQrJYY1JJfeq4F

的问题是,如果用户浏览文章时登录,他们将无法复制网址,并将其发送到任何人,因为它不会与另一个用户的ID或未登录的用户一起工作。

当需要在已知/未知用户之间共享ID时,将查询字符串(或其他任何地方)包含在ID中的正确方法是什么?

谢谢。

+0

为什么文章ID必须加密?我假设你跟踪用户是否通过会话或类似的方式登录。只需检查用户是否被允许访问服务器端的文章并在URL中使用该文章的普通ID。 – 2012-08-15 15:16:16

+0

是否有一个具体的原因使用加密的文章ID而不是简单的文章ID结合标准访问控制机制(检查用户是否已登录并具有查看权限)? – Robert 2012-08-15 15:18:04

回答

0

执行此操作的常用方法是有一个“链接”或“共享”按钮,用于生成某人可以发送电子邮件的链接。

1

将清晰的查询字符串上的id传递给web服务器并检查客户端是否有足够的凭据来读取该文章并做出适当的反应会更安全吗?它甚至可以返回相关的HTTP状态代码(401)来表明你需要登录,或者403表示你看不到它。

+0

我想这只是公开暴露数据库ID的普遍问题 - 这在错误的手中会非常危险,例如,如果该网站被黑客入侵。我认为这将是最佳做法? – Fijjit 2012-08-15 15:27:08

+1

这个网站为每个问题(以及答案和用户)提供了一个ID。 – 2012-08-15 16:30:22