Hướng dẫn password verify php online

Bạn không nên nhập muối riêng, để trống muối, hàm sẽ tạo ra muối ngẫu nhiên tốt.

Nội dung chính

  • 1. Sưu tầm các hàm validate trong PHP
  • 2. Validate form bằng PHP
  • Công đoạn 1: Kiểm tra dữ liệu
  • Công đoạn 2: Hiên thị lỗi và dữ liệu
  • 3. Lời kết

Chèn vào cơ sở dữ liệu (hoặc tệp hoặc bất cứ thứ gì bạn sử dụng) toàn bộ chuỗi được trả về bởi hàm. nó chứa: id của thuật toán, chi phí, muối (22 ký tự) và mật khẩu băm.

Toàn bộ chuỗi được yêu cầu để sử dụng password_verify (). Muối là ngẫu nhiên và không có hại khi rơi vào tay kẻ xấu (với mật khẩu đã băm). Điều này ngăn (hoặc rất khó) sử dụng các danh sách mật khẩu và mã băm đã tạo sẵn được tạo sẵn - bảng cầu vồng.

Bạn nên xem xét thêm thông số chi phí. Mặc định (nếu bị bỏ qua) là 10 - nếu cao hơn thì hàm tính toán băm lâu hơn. Tăng chi phí lên 1, gấp đôi thời gian cần thiết để tạo mã băm (và do đó kéo dài thời gian cần để phá mật khẩu)

$hash = password_hash($password, PASSWORD_BCRYPT, array("cost" => 10));

bạn nên đặt tham số này dựa trên kiểm tra tốc độ trên máy chủ của bạn. Chúng tôi khuyến nghị rằng hàm thực hiện 100ms + (một số thích đặt nó là 250 ms). Thông thường chi phí = 10 hoặc 11 là một lựa chọn tốt (trong năm 2015).

Để tăng tính bảo mật, bạn có thể muốn thêm vào mật khẩu một chuỗi bí mật dài (50-60 ký tự là lựa chọn tốt). trước khi bạn sử dụng password_hash () hoặc password_verify ().

$secret_string = '[email protected]#[email protected]#$234';
$password  = trim($_POST['user_password']) . $secret_string;
// here use password_* function

Thận trọng Việc sử dụng PASSWORD_BCRYPT cho tham số bí danh, sẽ dẫn đến việc tham số mật khẩu bị cắt ngắn còn độ dài tối đa là 72 ký tự.

Nếu mật khẩu $ sẽ dài hơn 72 ký tự và bạn thay đổi hoặc thêm 73 hoặc 90 ký tự thì băm sẽ không thay đổi. Tùy chọn, gắn $ secret_string phải ở cuối (sau mật khẩu của người dùng chứ không phải trước).

5 hữu ích 0 bình luận chia sẻ

  1. Tạo database và bảng users (nếu chưa có)
    • Tạo database hocPHP
    • Tạo table users có 11 field : id, tendangnhap, matkhau, hoten, email, ngaysinh, phai, ngaydangky, idgroup,  active, randomkey
    • Nhập vài users
      • ratvui/[email protected]
      • ratbuon/[email protected]
  2. Tạo form
    • Tạo form như hình trên sử dụng code hỗ trợ của bootstrap:
  3. Start session và check đăng nhập, lấy và hiện tên đăng nhập
if(session_id() == '') session_start(); //print_r($_SESSION);
if (isset($_SESSION['login_user'])==false) {
    header("location:dangnhap.php");
    exit();
} 
$tendangnhap = $_SESSION['login_user'];
  1. Xử lý khi submit
    • Lấy 3  giá trị trong $_POST : matkhaucu, maukhaumoi1, maukhaumoi2
    • Kiểm tra mật khẩu cũ
    • Kiểm tra mật khẩu mới: ngắn, khộng giống
    • Nếu không có lỗi thì lưu mật khẩu mới vào db và chuyển qua trang khác.
    • Trong tag input:  hiện các giá trị user đã gõ

Ngoài validate  form bằng Javascript ra thì chúng ta nên sử dụng PHP để validate nữa bởi chỉ validate bằng Javascript thôi thì chưa đủ độ bảo mật. Nếu người dùng cố tình tắt Javascript thì họ hoàn toàn có thể lách qua được lớp bảo vệ đó của website, nên trong bài viết này mình sẽ hướng dẫn các bạn cách validate form bằng PHP trước khi lưu trữ vào cơ sở dữ liệu.

Nội dung chính

  • 1. Sưu tầm các hàm validate trong PHP
  • 2. Validate form bằng PHP
  • Công đoạn 1: Kiểm tra dữ liệu
  • Công đoạn 2: Hiên thị lỗi và dữ liệu
  • 3. Lời kết

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Sưu tầm các hàm validate trong PHP

Trước khi vào bài thì mình muốn các bạn hãy sưu tầm các hàm kiểm tra dữ liệu vào một file nhé. Ở đây mình có sưu tầm một hàm, bạn có thể tham khảo và sử dụng cho dự án của mình. 

Bạn tạo file validate.php với nội dung như sau:

Bài viết này được đăng tại [free tuts .net]

// Kiểm tra định dạng email
function is_email($str) {
    return (!preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
}

Sau này bạn nên tự mình sưu tầm nhiều hàm hơn nữa nhé.

2. Validate form bằng PHP

Để validate form bằng PHP thì chúng ta phải thông qua hai công đoạn, công đoạn thứ nhất là lấy dữ liệu và kiểm tra dữ liệu, công đoạn thứ hai là hiển thị thông báo lỗi và hiển thị dữ liệu mà người dùng đã nhập để họ khỏi mất công nhập lại.

Mình sẽ làm một ví dụ là form liên hệ nhé các bạn. Bạn hãy tạo file contact.php và nhập nội dung HTML sau:



    
        Freetuts.net - Form liên hệ
        
        
    
    
        
        

freetuts.net - contact form

Tên của bạn
Email của bạn
Nội dung liên hệ

Giao diện chạy lên sẽ như sau:

Bây giờ mình sẽ thực hiện hai công đoạn trên nhé.

Công đoạn 1: Kiểm tra dữ liệu

Thứ nhất mình sẽ code PHP validate trong đoạn code , thứ hai mình không lưu vào database mà sẽ comment vị trí sẽ code để lưu cho các bạn hiểu thôi nhé.

Công đoạn 2: Hiên thị lỗi và dữ liệu

Chúng ta có hai biến cục bộ đó là biến $data$error, dựa vào hai biến này chúng ta show thông tin ra như sau:

Tên của bạn
Email của bạn
Nội dung liên hệ

Và đây là toàn bộ nội dung của file contact.php.



    
        Freetuts.net - Form liên hệ
        
        
    
    
        
        

freetuts.net - contact form

Tên của bạn
Email của bạn
Nội dung liên hệ

Chạy lên nếu bạn nhập dữ liệu bị lỗi thì sẽ như hình sau:

Thật tuyệt vời =))

3. Lời kết

Vậy là mình đã giới thiệu xong cách sử dụng PHP để validate dữ liệu của form, hy vọng bài này sẽ giúp hữu ích với các bạn. Bài tiếp theo mình sẽ hướng dẫn các bạn cách kết hợp validate cả Javascript lẫn PHP để giúp website bảo mật hơn.