首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我错过了这里的秃鹰吗?

我错过了这里的秃鹰吗?
EN

Security用户
提问于 2015-11-10 22:19:06
回答 2查看 374关注 0票数 5

最近,我在一次安全工程师的采访中被打了一顿,但没有得到任何具体的反馈。我想再次向社区提出这个问题,这样我就可以对这些因素加以改进。我发现的秃鹫名单如下。

您在登录页面上,两个表单元素User: / Password:您的用户名是Peter。

成功登录该应用程序后,您将被定向到一个页面,上面写着“你好,彼得”。(此页面中“Peter”的来源来自在登录用户名表单中填充的用户变量)

这方面的通用代码如下:

代码语言:javascript
复制
public String login( String user, String pass ) { 
       if (pass == DB.lookup(user)){ 
            return "Hello " + user; 
           }
       else { .....} 
       } 
  1. 此示例登录应用程序中存在哪些漏洞?
  2. 你要怎么修理它们?
  3. 你怎么储存密码?
  4. 如果您以这种方式存储它们,您通过什么机制恢复密码来根据用户在密码表单中输入的内容验证密码?到目前为止,我看到的是:

XSS:用户输入(用户)在没有经过编码库或验证器的情况下被推入响应的jsp页面,这意味着您是属于自己的。

Fix:我将实现从OWASP编码器项目到HTML元素的清除器。

我会使用bcrypt将密码存储为盐渍散列。每个散列密码的唯一盐。

EN

回答 2

Security用户

发布于 2015-11-12 10:39:41

还没有人明确提到SQL注入的潜力。用户字符串需要进行适当的验证,以确保它的存在并且只包含一个有效的用户名。

票数 3
EN

Security用户

发布于 2015-11-12 11:17:31

我可以看到以下漏洞:

  1. 在这里,它可能不算为一个漏洞(如此),但密码似乎没有在该代码中进行散列。
  2. 使用==进行字符串比较容易受到统计时序分析的影响。
  3. 你找到的XSS。
  4. 我假设这样使用DB.lookup是安全的,而不会出现SQL注入漏洞。正如@SourLolita所指出的,仍然缺少错误处理。
  5. 似乎没有任何XSRF保护,至少在代码中是不可见的。我不知道在这种情况下该如何利用它。

如何解决这些问题:

  1. 哈希密码使用密码哈希算法,如bcrypt或scrypt。
  2. 使用密码散列库比较/检查功能。
  3. 通过使用中的框架提供的适当转义函数传递名称。
  4. 添加错误检查。如果用户名是秘密的,时间豁免也适用于这里,然后它将是复杂的。
  5. 我得把这件事念清楚。有一段时间了。一种方法是在表单中提交一个特殊的随机令牌,并将其作为cookie提交,并要求它们匹配。
票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/105184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档