2009-08-03 41 views
42

我刚刚登陆了PHP5演出。我不会处理涉及超敏感数据的应用程序部分,但我仍然对安全和加密方法感到难堪。我只知道非常基础(不要以明文存储密码,不允许用户使用后期数据运行代码等)。我需要知道什么才能保证我的应用程序安全,并且我可以在哪里学习?每个Web开发人员应该了解哪些加密技术?

+16

问题不应该是“每个Web开发人员应该了解哪些安全性”?加密只是你问题的一部分,对吧? – 2009-08-03 19:01:57

+9

nyylbharrqgbxabjnobhgrapelcgvbapnaorsbhaqguvegrrapunenpgrefnjnl – Instantsoup 2009-08-03 19:22:54

+0

ebg13vffghcvqnaqunfnofbyhgrylabcynprvanqvfphffvbapbirevatfrphevgl – NotMe 2009-08-05 01:09:57

回答

27

了解哈希和加密的区别。加密通常是对字符串的双向解释。我可以加密我的密码,然后再解密为明文。哈希背后的想法是,它们成为单向的“加密”。

在我的网站上,我将密码存储为散列。任何时候用户登录时,我都会重新提供他们提供的密码,并根据存储在数据库中的散列进行测试,并批准它们是否匹配。如果他们忘记密码,我不能发送他们的密码,因为(通常)我无法知道。两个不同的字符串可以转换为相同的散列,这使得(通常)不可能找出原始字符串是什么。

这是一个很好的理解和辨别何时使用加密和散列的问题。

0

首先,你必须让这个PHP方法熟悉:

Here你在PHP的所有加密扩展。

+2

由于彩虹桌,md5和现在一样好破。 – Macha 2009-08-03 19:22:05

+2

这有点夸大其辞。添加盐和彩虹桌是没用的。 – 2009-08-03 20:29:17

6

简短的回答

你永远不可能太安全

使用Salted中的密码哈希以提高安全性

较长的答案(还没有完成,虽然)

安全性不是网上快速教程学到的东西。它不仅需要深入了解存在哪些漏洞,而且还需要为什么存在,并且如何他们工作。最大的问题之一(尤其是在开源领域)是,新方法一直在增加,因此我们必须理解安全概念和理论。

阅读书籍,上课并在本地机器上测试自己的漏洞。然后你会缓慢开始掌握如何保护Web应用程序的概念。

看看下面给您起步

  1. Developer's Guide to Web Application Security
  2. Web Security Testing Cookbook
  3. Applied Cryptography
11

无论你做什么,它都可以被打破。

17

知道不要编写自己的加密功能。现有的,可信任的图书馆是尽可能去的最佳途径。避免使用酷炫,尖端的技术,缺乏许多成功的程序员时间和用户时间。在第一人称对自己进行全面测试之前,不要信任您选择的功能。随时了解可能会在一夜之间阻止您选择的功能的新发展。要知道,仅仅因为您使用的是当今最好的加密技术,如果您将密钥放在桌面上,那么您已经保护了任何内容(例如,明文不在缓存中或存储在同一数据库中的另一个表中,私钥不是在打开左)

15
  • 了解encryptinghashing
  • 之间的差异了解原因salts
  • 理解HTTP是明文
  • 理解什么是HTTPS是
  • 易懂nd你永远不会(几乎永远不会)能够创建比第三方库和内置库已经做得更好的散列或加密方法
3

请注意以下几点当你存储密码,

  1. 散列密码通常更安全,因为您不必保守秘密。但是,它会阻止您在身份验证流程中使用其他基于散列的方案。例如,您不能对哈希密码使用HTTP摘要验证。

  2. 简单的散列很容易出现彩虹表攻击(http://en.wikipedia.org/wiki/Rainbow_table)。请向散列中添加非重新分配的随机数,或使用nonce作为HMAC的密钥。随机数需要与密码一起存储。我将它添加到摘要中。

  3. 如果使用加密,请确保使用随机初始向量,以便相同的密码将被加密为不同密码的不同用户。否则,你很容易发生模式匹配攻击。 MySQL有内置的加密命令。它不会注入IV,因此不要将其用于密码。

  4. 使用密文保存密钥名称/版本,以便可以旋转密钥。密钥轮换是符合某些标准所必需的。当您不得不更改或旋转按键时,无法解密密钥信息的加密。

如果你遵循这些建议,你的密码将是安全的任何加密/散列方案。

1

查看Open Web Application Security Project。他们有很多关于当前Web应用安全问题的信息,以及您需要采取什么措施来抵御这些问题。 OWASP正在编写一个Development Guide,它提供了许多有关Web应用程序和Web服务开发问题的良好信息。

1

如果你从一个PHP背景下看它,我会推荐这本书:

alt text http://ecx.images-amazon.com/images/I/51sKhc8YUlL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_.jpg

Pro PHP Security on Amazon

的事情,我真的很喜欢这本书是它涵盖了更而不仅仅是PHP中与安全相关的功能列表。它的很大一部分涵盖了一般的网络安全概念和保护机制。权限,最小权限原则,加密,哈希,跨站点脚本,跨站请求伪造,会话劫持等都包含在这里,以及使用PHP编写安全代码的示例。

在大学读过研究生水平的安全课后,我对本书的报道印象深刻。我认为它需要阅读任何专业的PHP开发人员。

相关问题