URL Querystring安全问题(ASP.NET)

时间:2009-04-15 22:01:40

标签: asp.net security

如果用户点击发布帖子的按钮(假设帖子中有UserName和Password),则这些凭据会成功通过身份验证。如果我重定向到一个完全不同的应用程序(所以我不能进行会话等),我在查询字符串中使用GET和用户名和密码(如果有帮助,我甚至可以使用基本加密),然后当它进入页面,我检查以确保它来自我期望它来自的页面,从查询字符串中提取值,将它们放在会话变量中然后重定向回到同一页面(删除查询字符串)值因此用户无法查看。这一切都发生在同一台服务器上的SSL上。

在这种情况下,是否可以指出有人拦截用户名和密码的安全漏洞?

2 个答案:

答案 0 :(得分:4)

如果您使用的是SSL,则无法拦截请求。问题实际上是客户端本身。将用户名和密码放入GET请求(甚至加密)并不是一个好主意,因为:

  1. 可以轻松地将URL复制并粘贴给其他人。
  2. 如果用户点击外部链接,则该URL将作为引荐来源发送。
  3. XSS攻击可用于劫持URL。

答案 1 :(得分:3)

Mehrdad已经提出了一些问题,以下是其他一些问题:

  • 在get请求中使用时,用户浏览器的历史记录/缓存中将明显显示用户名和密码。
  • 用户名/密码组合也可能会显示在您的服务器日志中。

另外:考虑为密码使用“盐渍”哈希,而不是仅仅存储明文(如果不是这样的话)。 已添加:正如Mehrdad正确评论:...即使遇到盐渍哈希,它仍然容易受到重播攻击......

修改

@EdenMachine:我认为你应该谷歌进行“跨站点身份验证”等等 - 这将“有点”难以实现,但是(如果正确完成)将更安全(也无缝)。示例链接:http://aspalliance.com/1513_Cross_Site_Authentication_and_Data_Transfer.all