Hướng dẫn php asymmetric encryption - mã hóa bất đối xứng php

Hướng dẫn

Xin chào! Nếu bạn đang đọc tệp này, đó là vì bạn muốn thêm mã hóa vào một trong các dự án PHP của mình. Công việc của tôi, với tư cách là người viết tài liệu này, là để giúp bạn đảm bảo rằng bạn đang làm đúng và sau đó chỉ cho bạn cách sử dụng thư viện này để làm điều đó. Để giúp tôi giúp bạn, xin vui lòng đọc tài liệu một cách cẩn thận và có chủ ý.

Nội phân chính

  • Một lời cảnh báo
  • Nhận mã
  • Sử dụng thư viện
  • Tài liệu chính thức
  • Kịch bản số 1: Giữ bí mật dữ liệu từ quản trị viên cơ sở dữ liệu
  • Kịch bản #2: Mã hóa dữ liệu tài khoản bằng mật khẩu đăng nhập của người dùng
  • Tìm sự giúp đỡ

Một lời cảnh báo

Nhận mã

Sử dụng thư viện

Tài liệu chính thức The most common use of cryptography in web applications is to protect the users' login passwords. If you're trying to use this library to "encrypt" your users' passwords, you're in the wrong place. Passwords shouldn't be encrypted, they should be hashed with a slow computation-heavy function that makes password guessing attacks more expensive. See How to Safely Store Your Users' Passwords in 2016.

Kịch bản số 1: Giữ bí mật dữ liệu từ quản trị viên cơ sở dữ liệu Likewise, if you're trying to encrypt messages sent between two parties over the Internet, you don't want to be using this library. For that, set up a TLS connection between the two points, or, if it's a chat app, use the Signal Protocol.

Kịch bản #2: Mã hóa dữ liệu tài khoản bằng mật khẩu đăng nhập của người dùng

Tìm sự giúp đỡencryption does not, and is not intended to, hide the length of the data being encrypted. For example, it is not safe to encrypt a field in which only a small number of different-length values are possible [e.g. "male" or "female"] since it would be possible to tell what the plaintext is by looking at the length of the ciphertext. In order to do this safely, it is your responsibility to, before encrypting, pad the data out to the length of the longest string that will ever be encrypted. This way, all plaintexts are the same length, and no information about the plaintext can be gleaned from the length of the ciphertext.

Nhận mã

Sử dụng thư viện

Tài liệu chính thứcInstalling and Verifying documentation to get the code, and then come back here to continue the tutorial.

Sử dụng thư viện

Tài liệu chính thức

Kịch bản số 1: Giữ bí mật dữ liệu từ quản trị viên cơ sở dữ liệu

Tài liệu chính thức

Kịch bản số 1: Giữ bí mật dữ liệu từ quản trị viên cơ sở dữ liệu

Các lớp sau có sẵn để bạn sử dụng:

  • Crypto: Mã hóa và giải mã chuỗi.
  • Tệp: Mã hóa và giải mã các tệp.
  • Khóa: đại diện cho một khóa mã hóa bí mật.
  • KeyProtectedByPassword: Thể hiện khóa mã hóa bí mật cần được "mở khóa" bằng mật khẩu trước khi nó có thể được sử dụng.

Kịch bản số 1: Giữ bí mật dữ liệu từ quản trị viên cơ sở dữ liệu

Trong kịch bản này, mô hình mối đe dọa của chúng tôi như sau. Alice là quản trị viên máy chủ chịu trách nhiệm quản lý một máy chủ web đáng tin cậy. Eve là quản trị viên cơ sở dữ liệu chịu trách nhiệm quản lý máy chủ cơ sở dữ liệu. Dave là một nhà phát triển web làm việc trên mã cuối cùng sẽ chạy trên máy chủ web đáng tin cậy.

Hãy nói Alice và Dave tin tưởng lẫn nhau và Alice sẽ lưu trữ ứng dụng của Dave trên máy chủ của cô ấy. Nhưng cả Alice và Dave đều không tin tưởng Eve. Họ biết EVE là một quản trị viên cơ sở dữ liệu tốt, nhưng cô ấy có thể có động cơ đánh cắp dữ liệu từ cơ sở dữ liệu. Họ muốn giữ một số bí mật dữ liệu của ứng dụng web từ EVE.

Để làm điều đó, Alice sẽ sử dụng tập lệnh ____99 bao gồm tạo khóa mã hóa ngẫu nhiên và in nó thành đầu ra tiêu chuẩn:

$ composer require defuse/php-encryption
$ vendor/bin/generate-defuse-key

Alice sẽ chạy tập lệnh này một lần và lưu đầu ra vào tệp cấu hình, giả sử trong ____10 và đặt các quyền của tệp để chỉ người dùng mà trang web Php script chạy khi có thể truy cập nó.

Dave sẽ viết mã của mình để tải khóa từ tệp cấu hình:

Bài Viết Liên Quan

Chủ Đề