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

jcw*_*jcw 41 php encryption

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

Sam*_*son 27

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

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

这是一个很好的问题,可以很好地理解并识别何时使用加密与哈希.

  • @Thorarin:价值有限?存储散列密码并将其与给定密码的散列进行比较的技术是常见的做法.SSL可以阻止中间的线上人员或重放攻击.要求每个人携带一个RSA(或等效的)密钥卡是理想的,但它还不实用.如果用户在他们的计算机上有恶意软件,他们会被搞砸,所以我们甚至不去那里. (6认同)

Bob*_*man 17

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


cwa*_*wap 15

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


Bil*_*ard 14

该技术不是安全方面最薄弱的环节.

  • 你的意思是,像佩林女士的雅虎帐户? (2认同)

Cyr*_*pta 11

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

  • +和大多数情况下的事实是,编写自己的例程是一个愚蠢的举动. (6认同)

Sev*_*Sev 6

简短的回答

你永远不会太安全

使用Salted Password Hashing可提高安全性

答案越长(但仍未完成)

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

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

请查看以下内容以启动您

  1. 开发人员Web应用程序安全指南
  2. 网络安全测试指南
  3. 应用密码学


zvr*_*rba 6

在哪里学习安全性:获取Schneier的书" 应用密码学".