2013-03-09 84 views
0

我希望有人可以建议,如果下面的情况是可以接受的或不是,如果不是我有什么其他方式去做这件事。ASP .Net安全执行

我开发了一个使用Forms Authentication的ASP.Net站点,使用我们自己的数据库(SQL)模型进行身份验证。多个用户可以登录。需要考虑的一点是,每个用户不能访问彼此的记录。

在代码中,我有页面加载我有一个用户对象加载用户的详细信息登录。

当他们访问记录时,我有一个超链接,其中包含传入记录的ID,其中重定向到用户可以查看完整记录的详细信息页面。

现在的详细信息页面上,我再次加载当前用户的详细信息,然后有一些SQL来通过登录的ID的用户,且传入的记录的ID获得的记录。

到目前为止,这有当我登录访问自己的记录的用户1时工作 - 复制URL并将其粘贴到不同的浏览器中,该浏览器将用户重定向到登录页面。这次我使用用户2登录。页面显示为,但没有任何详细信息。

听起来不错,或者我需要做什么?当然,如果没有返回详细信息,我将实现重定向到拒绝访问页面,而不是显示空白页面。

如果您有任何问题随时问。

+0

请更新标题与您的具体问题..您可以阅读[常见问题]和[问] – 2013-03-09 11:49:46

+0

你的问题是什么?你问是否已经实施的机制是安全的?如果这是问题,那么这是不正确的网站,你可能想试试http://programmers.stackexchange.com/ – 2013-03-09 14:04:13

回答

0

这一切听起来都不错 - 尽管我会选择更细化的东西:可以在访问控制列表的基础上访问其他人的记录,但这更复杂。

我写的内容中唯一改变的是“重定向”到访问被拒绝的页面。 切勿对错误页面执行重定向 - 而是在原始响应中返回错误消息。您可以通过使用Server.Transfer或通过清除响应缓冲区(如有必要)并使用正确的消息将页面内容设置为ASCX来在ASP.NET WebForms中执行此操作。不要忘记将HTTP状态设置为403.

+0

谢谢戴。当你说“在原始回复中返回错误信息”你是什么意思?当用户访问另一个用户记录时,不会返回任何结果。或者你的意思是如果0记录返回,然后用户Server.Transfer? – Computer 2013-03-09 11:57:18

+0

“在原始响应中返回错误消息”我的意思是你应该返回人类可读的错误消息给用户而不执行'Response.Redirect',它应该在相同的请求/响应中返回给客户端周期。 – Dai 2013-03-12 00:17:01

+0

如果没有行显示,我可以只显示“拒绝访问”面板吗? – Computer 2013-03-13 15:29:14