2012-09-19 111 views
0

如果这个问题在这个网站上没有任何关系,我真的很抱歉,但我想这里有很多伟大的思想。 在不久的将来,我将创建一个程序,让用户拥有自己的账户,所以我开始考虑安全问题,这就是为什么我必须问,因为我想到了几个方面,而我非常关心。安全登录系统背后的逻辑是什么?

  • 很显然,我不应该明文密码存储在我的数据库,用户将从对它进行加密,发送给他们的信息的程序,难道是我这个存储的加密密码,或应在服务器再次对其进行加密并保存一个呢?或者其他解决方案。

  • 验证时,我应该简单地比较一下存储的加密密码还是应该进行一些解密?

这几乎涵盖了我关于如何处理密码的想法,但是我对黑客潜在问题存在问题。

  • 一个人是否有可能拦截世界上发生的任何流量,或只有本地网络?

  • 比方说,黑客得到所有发送到服务器的包,密码被加密,所以他无法获得明文密码,但是不可能重新发送包,从而无法重新发送包欺骗服务器登录黑客?

如果回答最后一个问题是肯定的,在我心里没有保持安全的事情,不管你因为数据仍然是有用的有多好它加密的方式。

有人知道事情是如何工作的?也许担任安全管理员(或类似职务),可以告诉他们在公司中如何做(当然不会泄露敏感信息!)?我不要求加密方法,但要求保护事物免受未经授权的人的保护。

*编辑* 我实际上发现如何处理和存储密码,所以这不再是一个问题。尽管如此,我仍然对重新发送软件包感到好奇。

+0

一个提示;不要试图想出自己的安全系统,有相当多的人尝试过失败了。使用已知具有_已知优势/弱点的实现存在的东西。 –

+0

是的,我没有想到一种全新的革命性方法,但我实际上找不到“这是如何使您的系统安全” - 教程。必须有一个标准来说明如何处理,存储密码以及如何检索密码,这是我的问题的前半部分。关于黑客的第二部分只是因为我对某人仍然可以通过监控网络而感到好奇。 – XistenZ

+0

@XistenZ你用什么来处理和存储密码? – Woot4Moo

回答

2

我将逐步阐述您的每一点,并为您应该做的事提供基准,然后提供“更安全”的做事方式。

很显然,我不应该明文密码存储在我的数据库中, 程序,用户将发送其信息将加密 它,它是我这个存储的加密密码,或应在服务器 加密它再次存储,而不是?或者其他解决方案。

你永远不应该在数据库中存储加密密码,使用散列。
因此,这样做的基准方式是对用户密码使用MD5散列。做这种散列的更安全的方法是使用SHA-2等加密散列。我们不存储加密密码的原因是您可以反转加密,但不能反转散列。你只能找到一个碰撞。现在我说MD5的事实会在这个和安全社区中引起很多的怀疑。 MD5并不像许多人想象的那么糟糕,但它远没有SHA-2那么安全。 使用盐

验证时,我应该简单地比较加密的密码,我 得到了与存储或应该有一些解密回事的人吗?

参照上述。

“一个人是否有可能拦截世界上或仅在本地网络上发生的任何流量?”

两者。如果我在您的网络上,无论它的位置如何,我都在本地网络上。如果您以不安全的方式广播您的数据,我绝对可以拦截它。

比方说,一个黑客获取beeing发送到 服务器的所有包的保持,该密码是加密的,所以没有办法,他可以得到 明文密码,但不会是有可能重发包 ,从而诱骗服务器登录黑客?

我相信你的意思是数据包。密码被加密并不妨碍我获得明文密码。它只会减慢我的速度,因为如果我拦截了正确的数据包,我可以脱机密码。众所周知,重播攻击不会让系统“被欺骗”进入其他人登录。但是,一旦我检索到明文密码,我只需使用与其关联的用户名并登录。现在这并不是说像SQL注入这样的事情不会让我规避抓包的需要。因此,除非您正在执行客户端加密(请jeebus不这样做),并且不能唯一标识进入系统的请求,否则重播攻击无法正常工作。所以想象我是攻击者A,我拦截了一个加密的密码。我可以工作一些魔法并进入系统。现在,如果我们更进一步并应用随机生成的值来唯一标识原始数据包,我们可以确定它与预期输入不匹配。本质上来说,加密本身并不能拯救你。

+0

谢谢!请问为什么“重播攻击”不起作用?如果“合法用户”发送允许他们登录的数据包,为什么“黑客”不能使用相同的? – XistenZ

+0

@XistenZ更新了答案,以包含更多信息。 – Woot4Moo

+0

如果我理解正确,数据包携带一个标识符(应该是唯一的),防止再次使用相同的数据包?如果是这样,是不是可能拦截并改变这个标识符? 此外,我留下了加密的想法,如果这使你的答案有任何不同。 – XistenZ

相关问题