Php 关于加密,每个web开发人员都应该知道什么?

Php 关于加密,每个web开发人员都应该知道什么?,php,encryption,Php,Encryption,我刚得到一份PHP5的工作。我不会处理应用程序中涉及超敏感数据的部分,但我对安全性和加密方法知之甚少,令人尴尬。我只知道最基本的(不要以明文形式存储密码,不允许用户使用post数据运行代码,等等)。我需要知道什么才能保证我的应用程序的安全,我在哪里可以学到它?首先,您必须熟悉以下php方法: 您拥有所有PHP加密扩展。简短回答 你再安全不过了 使用密码哈希提高安全性 较长的答案(尽管仍不完整) 安全性不是通过网络上的快速教程来学习的。它不仅需要深入了解存在哪些漏洞,还需要深入了解它们存在

我刚得到一份PHP5的工作。我不会处理应用程序中涉及超敏感数据的部分,但我对安全性和加密方法知之甚少,令人尴尬。我只知道最基本的(不要以明文形式存储密码,不允许用户使用post数据运行代码,等等)。我需要知道什么才能保证我的应用程序的安全,我在哪里可以学到它?

首先,您必须熟悉以下php方法:


您拥有所有PHP加密扩展。

简短回答

你再安全不过了

使用密码哈希提高安全性

较长的答案(尽管仍不完整)

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

阅读书籍,上课,自己在本地机器上测试漏洞。然后,您将慢慢开始理解如何保护web应用程序背后的概念

查看以下内容,开始您的学习


  • 了解散列和加密之间的区别。加密通常是字符串的双向解释。我可以加密我的密码,然后再次解密为明文。散列背后的想法是它们变成了单向“加密”

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


    这是一个很好的问题,有助于明确何时使用加密和哈希。

    从何处了解安全性:获取Schneier的书。

    无论你做什么,它都可能被破坏。

    知道不要编写自己的加密功能。一个现有的、受信任的库是最好的选择。避免使用那些缺乏成功程序员时间和用户时间的酷炫前沿技术。知道不要相信你选择的功能,直到你自己彻底测试过它,第一人称。随时了解可能一夜之间使您选择的功能过时的新发展。要知道,正是因为您使用了当今最好的加密技术,如果您将密钥保留在表中(例如,明文不在缓存中或存储在同一数据库中的另一个表中,私钥不在公开状态),您就无法保护任何内容。

    • 理解和之间的区别
    • 了解原因
    • 理解HTTP是明文
    • 了解什么是HTTPS
    • 请理解,您永远(几乎永远)无法创建比第三方LIB和内置LIB更好的哈希或加密方法

      • 技术不是安全中最薄弱的环节


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

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


      • 简单散列易于使用rainbow表attak()。请将非重复出现的nonce添加到哈希中,或将nonce用作HMAC的密钥。nonce需要与密码一起存储。我把它预先写在《文摘》上

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

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


      • 如果您遵循这些建议,您的密码在任何加密/哈希方案下都是安全的。

        请查看。他们有很多关于当前web应用程序安全问题的信息,以及您需要做些什么来防范这些问题。OWASP整合了一个提供了很多关于web应用和web服务开发问题的好信息的工具。

        如果您是从PHP环境来看的,我推荐这本书:

        我真正喜欢这本书的地方是,它不仅仅涵盖了PHP中与安全相关的函数列表。其中很大一部分涉及一般的web安全概念和保护机制。权限、最小特权原则、加密、哈希、跨站点脚本、跨站点请求伪造、会话劫持等都在这里介绍,并附有用PHP编写安全代码的示例


        在大学里参加了研究生级别的安全课程,我对本书的内容印象深刻。我认为对于任何专业的PHP开发者都需要阅读。

        不应该是“每个Web开发者应该知道什么是安全”的问题。加密只是你问题的一部分,对吧?NYLBHARRQGBXABJNOBHGRAPELCGVBAPNAORSBHAQGUGVEGRAPUNENPGREFNJNLEBG13VFFGHCVQNAQUNFNOFBYHGRYLABCYNPRVANQVFPHVBAPBIREVATFRPHEVGLQHU!rirelbar xabjf ebg14 vf zber frpher+在大多数情况下,这是事实