每个Web开发人员应该如何了解加密?

时间:2009-08-03 18:56:50

标签: php encryption

我刚刚获得了PHP5演出。我不会处理涉及超敏感数据的应用程序部分,但我仍然对安全性和加密方法知之甚少。我只知道非常基础(不要以明文存储密码,不允许用户使用帖子数据运行代码等)。为了保证我的应用程序安全,我需要知道什么,我在哪里可以学习它?

11 个答案:

答案 0 :(得分:27)

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

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

这是一个很好的问题,可以深入了解并识别何时使用加密与哈希。

答案 1 :(得分:17)

知道不要编写自己的加密功能。现有的可信库是最好的方法。避免使用酷炫的前沿技术,这些技术缺少许多成功的程序员工时和用户时间。知道不要相信你选择的功能,直到你自己彻底测试它,第一人称。及时了解可能在一夜之间阻止您选择的功能的新发展。知道这只是因为你正在使用当今最好的加密技术,如果你把钥匙留在桌子上就没有任何保护(例如,明文不在缓存中或存储在同一数据库中的另一个表中,私钥不是留在空旷的地方)

答案 2 :(得分:15)

  • 了解encryptinghashing
  • 之间的区别
  • 了解salts
  • 的原因
  • 了解HTTP是明文
  • 了解HTTPS是什么
  • 明白你将永远(几乎从不)能够创建比第三方库和内置库已经做的更好的散列或加密方法

答案 3 :(得分:14)

答案 4 :(得分:11)

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

答案 5 :(得分:6)

简短回答

  

你永远不会太安全

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

答案较长(但仍未完成)

安全性不是通过网络上的快速教程学习的。它需要深入了解不仅存在哪些漏洞,而且为什么存在,如何它们的工作原理。最大的问题之一(特别是在开源中)是新方法一直在增加,因此我们必须理解安全概念和理论。

阅读书籍,上课,并在本地计算机上自行测试漏洞。然后,您将慢慢地开始掌握如何保护Web应用程序的概念

请查看以下内容以启动您

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

答案 6 :(得分:6)

在哪里学习安全性:获取Schneier的书Applied Cryptography

答案 7 :(得分:3)

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

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

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

  3. 如果使用加密,请确保使用随机初始向量,以便为不同用户将相同密码加密到不同的密文。否则,您很容易出现模式匹配攻击。 MySQL有内置的加密命令。它不会注入IV,所以永远不要将它用于密码。

  4. 使用密文保存密钥名称/版本,以便可以旋转密钥。需要按键旋转才能符合某些标准。当您被迫更改或旋转密钥时,无法解密没有密钥信息。

  5. 如果您遵循这些建议,使用任何加密/哈希方案都可以安全地使用密码。

答案 8 :(得分:1)

查看Open Web Application Security Project。他们有很多关于当前Web应用程序安全问题的信息,以及您需要做些什么来防范它们。 OWASP正在组建一个Development Guide,提供有关Web应用程序和Web服务开发问题的大量有用信息。

答案 9 :(得分: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中与安全相关的函数列表。其中很大一部分涉及一般的Web安全概念和保护机制。此处介绍了权限,最小权限原则,加密,散列,跨站点脚本,跨站点请求伪造,会话劫持等,以及使用PHP编写安全代码的示例。

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

答案 10 :(得分:0)

首先你必须熟悉这个php方法:

Here您在PHP中拥有所有加密扩展。