Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Băm hoặc mã hóa các biến được gửi trong một url

Đầu ra của hầu hết các quy trình mã hóa (hoặc băm, v.v.) là dữ liệu nhị phân tùy ý, không thể được đưa vào URL một cách an toàn nếu không mã hóa nó.

Như ghi chú eggyal , chỉ cần sử dụng urlencode() trên dữ liệu phải là đủ. Tuy nhiên, mã hóa URL tiêu chuẩn có thể không phải là cách nhỏ gọn nhất để mã hóa dữ liệu nhị phân ngẫu nhiên. Base64 mã hóa sẽ hiệu quả hơn, nhưng không may là không hoàn toàn an toàn cho URL do việc sử dụng + nhân vật.

May mắn thay, có một biến thể chuẩn hóa an toàn cho URL của mã hóa base64, được chỉ định trong RFC 4648 là "base64url". Đây là một cặp hàm để mã hóa và giải mã dữ liệu bằng cách sử dụng mã hóa này trong PHP, dựa trên câu trả lời này của" gutzmer at usa dot net " :

function base64url_encode($data) {
    return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}

function base64url_decode($data) {
    return base64_decode(strtr($data, '-_', '+/'));
}

(Tôi đã đơn giản hóa hàm giải mã một chút, vì ít nhất các phiên bản PHP hiện tại dường như không yêu cầu = đệm các ký tự trong đầu vào thành base64_decode() .)

Ps. Để tạo mã thông báo ngẫu nhiên một cách an toàn ngay từ đầu, hãy xem ví dụ: câu hỏi này .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cột thời gian CakePHP 3 được thêm ngày

  2. MYSQL nhận được tất cả các kết quả nhưng đầu tiên

  3. Làm cách nào để chèn mảng vào mysql bằng PDO và bindParam?

  4. Chuyển đổi DateTime trong C # sang định dạng yyyy-MM-dd và lưu trữ nó vào MySql DateTime Field

  5. Đã vượt quá giới hạn đệ quy trong thủ tục không truy xuất lại