Hướng dẫn password regex in php - mật khẩu regex trong php

Hướng dẫn password regex in php - mật khẩu regex trong php

Mật khẩu Biểu thức thông thường có thể được sử dụng để xác minh rằng mật khẩu được cung cấp đủ mạnh để cung cấp bảo vệ tốt hơn chống lại các cuộc tấn công của vũ lực bot. Phương pháp này, tuy nhiên, không đảm bảo rằng mật khẩu sẽ có đủ entropy để hoàn toàn an toàn.

Mật khẩu mạnh mẽ regex

Biểu thức thông thường bên dưới Chek mà mật khẩu:

  • Có chiều dài tối thiểu 8 ký tự. Điều chỉnh nó bằng cách sửa đổi {8,}{8,}
  • Ít nhất một chữ cái tiếng Anh chữ hoa. Bạn có thể loại bỏ điều kiện này bằng cách xóa (? =.*? [A-Z])(?=.*?[A-Z])
  • Ít nhất một chữ cái chữ thường. & nbsp; bạn có thể loại bỏ điều kiện này bằng cách xóa (? =.*? [A-Z])(?=.*?[a-z])
  • Ít nhất một chữ số. Bạn có thể xóa điều kiện này bằng cách xóa (? =.*? [0-9])(?=.*?[0-9])
  • Ít nhất một ký tự đặc biệt, & nbsp; bạn có thể xóa điều kiện này bằng cách xóa (? =.*? [#[Email & nbsp; được bảo vệ] $%^&*-]))(?=.*?[#[email protected]$%^&*-])

Kiểm tra nó!

/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#[email protected]$%^&*-]).{8,}$/

ĐÚNG VẬY

Sai

Nhập một văn bản vào đầu vào ở trên để xem kết quả

Mã ví dụ trong PHP:

// Validate strong password
$password_regex = "/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#[email protected]$%^&*-]).{8,}$/"; 
echo preg_match($password_regex, 'secret'); // returns 0
echo preg_match($password_regex, '-Secr3t.'); // returns 1

Kiểm tra nó!

ĐÚNG VẬY

Sai

Nhập một văn bản vào đầu vào ở trên để xem kết quả

Kiểm tra nó!

ĐÚNG VẬY

Sai

Nhập một văn bản vào đầu vào ở trên để xem kết quả

Mã ví dụ trong PHP:

Ghi chú về Mật khẩu xác thực Regex

  • .Qwerty1
  • !Q1w2e3r4
  • Mặc dù xác thực Regex này tốt hơn không có gì, nhưng trong các tình huống khi cần bảo mật bổ sung, bạn cũng nên kiểm tra mật khẩu được nhập cho một bộ mật khẩu thường được sử dụng như:

vân vân

Tôi hiện đang thực hiện một số bài kiểm tra với Regex. Tôi đã có một bài tập yêu cầu kiểm tra mật khẩu mạnh, điều đó có nghĩa là nó nên có: ít nhất một số, một chữ cái viết thường, một chữ cái viết hoa, không có khoảng trắng và ít nhất một ký tự không phải là chữ cái hoặc số. Và nó nên nằm trong khoảng 8-16 ký tự.

Nội dung chính ShowShow

  • Làm thế nào để xác nhận mật khẩu trong PHP?
  • Regex cho các nhân vật đặc biệt là gì?
  • Làm thế nào để bạn xác nhận một mật khẩu?
  • Làm cách nào để lấy mật khẩu và xác nhận mật khẩu trong PHP?

Tôi đã viết mã này:

     = 8 && strlen($pass) < 17)
     {
       if(preg_match("/^\w*(?=\w*\d)(?=\w*[A-Z])(?=\w*[^0-9A-Za-z])(?=\w*[a-z])\w*$/", $pass) )
        echo "$pass => MATCH
"; else echo "$pass => FAIL
"; } else echo "$pass => FAIL(because of length)
"; } ?>

Hai người cuối cùng nên phù hợp nhưng họ thất bại. Tôi nghĩ rằng vấn đề đứng ở

(?=\w*[^0-9A-Za-z])

được cho là phù hợp với mô hình để có ít nhất một ký tự không phải là một chữ cái hoặc một số, nhưng tôi không thể hiểu tại sao. Tôi biết mật khẩu mạnh này được giải quyết trên internet nhưng đó không phải là vấn đề của tôi. Vấn đề của tôi là tại sao phần công việc đó không làm những gì được cho là phải làm.

hỏi ngày 26 tháng 2 năm 2017 lúc 10:17Feb 26, 2017 at 10:17Feb 26, 2017 at 10:17

10

Bạn có thể chia regex của bạn thành các séc khác nhau.

Nó sẽ cho phép bạn viết các điều kiện dễ đọc hơn và hiển thị các thông báo lỗi cụ thể. Mặc dù, các mẫu RegEXP sẽ dễ viết hơn và hiểu.

I E. :

$errors = array();
if (strlen($pass) < 8 || strlen($pass) > 16) {
    $errors[] = "Password should be min 8 characters and max 16 characters";
}
if (!preg_match("/\d/", $pass)) {
    $errors[] = "Password should contain at least one digit";
}
if (!preg_match("/[A-Z]/", $pass)) {
    $errors[] = "Password should contain at least one Capital Letter";
}
if (!preg_match("/[a-z]/", $pass)) {
    $errors[] = "Password should contain at least one small Letter";
}
if (!preg_match("/\W/", $pass)) {
    $errors[] = "Password should contain at least one special character";
}
if (preg_match("/\s/", $pass)) {
    $errors[] = "Password should not contain any white space";
}

if ($errors) {
    foreach ($errors as $error) {
        echo $error . "\n";
    }
    die();
} else {
    echo "$pass => MATCH\n";
}

Hy vọng nó giúp.

sau đó

9.2775 huy hiệu vàng28 Huy hiệu bạc40 Huy hiệu đồng5 gold badges28 silver badges40 bronze badges5 gold badges28 silver badges40 bronze badges

Đã trả lời ngày 26 tháng 2 năm 2017 lúc 10:41Feb 26, 2017 at 10:41Feb 26, 2017 at 10:41

JazzjazzJazZJazZ

4.2942 Huy hiệu vàng19 Huy hiệu bạc39 Huy hiệu đồng2 gold badges19 silver badges39 bronze badges2 gold badges19 silver badges39 bronze badges

2

Bạn có thể thử điều này:

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.* )(?=.*[^a-zA-Z0-9]).{8,16}$

Nó bao gồm tất cả các yêu cầu của bạn

Giải trình

  1.      = 8 && strlen($pass) < 17)
         {
           if(preg_match("/^\w*(?=\w*\d)(?=\w*[A-Z])(?=\w*[^0-9A-Za-z])(?=\w*[a-z])\w*$/", $pass) )
            echo "$pass => MATCH
    "; else echo "$pass => FAIL
    "; } else echo "$pass => FAIL(because of length)
    "; } ?>
    5 ít nhất một chữ số
  2. (?=\w*[^0-9A-Za-z])
    
    0 Ít nhất một chữ cái thường
  3. (?=\w*[^0-9A-Za-z])
    
    1 ít nhất một chữ cái trên
  4. (?=\w*[^0-9A-Za-z])
    
    2 Không có không gian
  5. (?=\w*[^0-9A-Za-z])
    
    3 Ít nhất một nhân vật ngoại trừ
    (?=\w*[^0-9A-Za-z])
    
    4
  6. (?=\w*[^0-9A-Za-z])
    
    5 từ 8 đến 16 ký tự

Mã mẫu:

     = 8 && strlen($pass) < 17)
     {
       if(preg_match("/^\w*(?=\w*\d)(?=\w*[A-Z])(?=\w*[^0-9A-Za-z])(?=\w*[a-z])\w*$/", $pass) )
        echo "$pass => MATCH
"; else echo "$pass => FAIL
"; } else echo "$pass => FAIL(because of length)
"; } ?>
1

Chạy nó ở đây

Đã trả lời ngày 26 tháng 2 năm 2017 lúc 10:45Feb 26, 2017 at 10:45Feb 26, 2017 at 10:45

Mustofa Rizwanmustofa RizwanMustofa RizwanMustofa Rizwan

10.1k2 Huy hiệu vàng25 Huy hiệu bạc42 Huy hiệu đồng2 gold badges25 silver badges42 bronze badges2 gold badges25 silver badges42 bronze badges

5

     = 8 && strlen($pass) < 17)
     {
       if(preg_match("/^\w*(?=\w*\d)(?=\w*[A-Z])(?=\w*[^0-9A-Za-z])(?=\w*[a-z])\w*$/", $pass) )
        echo "$pass => MATCH
"; else echo "$pass => FAIL
"; } else echo "$pass => FAIL(because of length)
"; } ?>
2

Đã trả lời ngày 26 tháng 2 năm 2017 lúc 10:40Feb 26, 2017 at 10:40Feb 26, 2017 at 10:40

SrikrushnasrikrushnaSrikrushnaSrikrushna

3.7751 Huy hiệu vàng36 Huy hiệu bạc45 Huy hiệu đồng1 gold badge36 silver badges45 bronze badges1 gold badge36 silver badges45 bronze badges

Sử dụng Regex đơn giản này để kiểm tra mật khẩu mạnh

     = 8 && strlen($pass) < 17)
     {
       if(preg_match("/^\w*(?=\w*\d)(?=\w*[A-Z])(?=\w*[^0-9A-Za-z])(?=\w*[a-z])\w*$/", $pass) )
        echo "$pass => MATCH
"; else echo "$pass => FAIL
"; } else echo "$pass => FAIL(because of length)
"; } ?>
3

Javascript:

     = 8 && strlen($pass) < 17)
     {
       if(preg_match("/^\w*(?=\w*\d)(?=\w*[A-Z])(?=\w*[^0-9A-Za-z])(?=\w*[a-z])\w*$/", $pass) )
        echo "$pass => MATCH
"; else echo "$pass => FAIL
"; } else echo "$pass => FAIL(because of length)
"; } ?>
4
  1. Độ dài tối thiểu 8 ký tự
  2. ít nhất 1 chữ hoa
  3. ít nhất 1 chữ thường
  4. ít nhất 1 nhân vật đặc biệt
  5. ít nhất 1 chữ số

Đã trả lời ngày 23 tháng 9 năm 2020 lúc 10:26Sep 23, 2020 at 10:26Sep 23, 2020 at 10:26

________số 8

Thêm ký tự đặc biệt theo yêu cầu.

Kiểm tra mã trên

  • Ít nhất 1 ký tự viết hoa
  • Ít nhất 1 ký tự viết thường
  • Ít nhất 1 chữ số
  • Ít nhất 1 nhân vật đặc biệt

Bấm vào đây để kiểm tra

Đã trả lời ngày 10 tháng 4 lúc 10:50Apr 10 at 10:50Apr 10 at 10:50

Làm thế nào để xác nhận mật khẩu trong PHP?

Trong PHP, chúng tôi có thể xác nhận cường độ mật khẩu bằng hàm preg_match () ....

Mật khẩu phải có độ dài ít nhất 8 ký tự ..

Mật khẩu phải bao gồm ít nhất một trường hợp trên ..

Mật khẩu phải bao gồm ít nhất một số ..

Mật khẩu phải bao gồm ít nhất một ký tự đặc biệt ..

Regex cho các nhân vật đặc biệt là gì?

Các ký tự Regex đặc biệt: Những nhân vật này có ý nghĩa đặc biệt trong Regex (sẽ được thảo luận dưới đây):., +, *,?, ^, $, (,), [,], {,}, |, \.Trình tự thoát (\ char): Để phù hợp với một ký tự có ý nghĩa đặc biệt trong regex, bạn cần sử dụng tiền tố trình tự thoát với dấu gạch chéo ngược (\).. , + , * , ? , ^ , $ , ( , ) , [ , ] , { , } , | , \ . Escape Sequences (\char): To match a character having special meaning in regex, you need to use a escape sequence prefix with a backslash ( \ ).. , + , * , ? , ^ , $ , ( , ) , [ , ] , { , } , | , \ . Escape Sequences (\char): To match a character having special meaning in regex, you need to use a escape sequence prefix with a backslash ( \ ).

Làm thế nào để bạn xác nhận một mật khẩu?

Các tham số sau đây thường được sử dụng để xác thực mật khẩu dưới mọi hình thức ....

Chỉ các đầu vào chữ và số được chấp nhận trong trường mật khẩu ..

Nó sẽ bắt đầu với bảng chữ cái chữ hoa ..

Ít nhất một mật khẩu bảng chữ cái chữ hoa ..

Mật khẩu phải có độ dài cụ thể ..

Một giá trị số phải được sử dụng trong mật khẩu ..

Làm cách nào để lấy mật khẩu và xác nhận mật khẩu trong PHP?

Mật khẩu và xác nhận xác nhận mật khẩu trong câu trả lời của mã PHP...

if ($ _post ["password"] === $ _post ["isprible_password"]) {.

// thành công!.

khác {.

// thất bại :(.