Rumah >pembangunan bahagian belakang >tutorial php >Petua Pantas: Cara Hash Kata Laluan di PHP

Petua Pantas: Cara Hash Kata Laluan di PHP

Lisa Kudrow
Lisa Kudrowasal
2025-02-08 12:03:10674semak imbas

Quick Tip: How to Hash a Password in PHP

penjelasan terperinci dan amalan terbaik untuk hashing kata laluan php

Dalam mana -mana bahasa pengaturcaraan, adalah penting untuk memahami cara hash kata laluan. Artikel ini dengan cepat akan menjelaskan cara melaksanakan hashing kata laluan di PHP dan menjelaskan kepentingannya.

Setiap pengaturcara PHP akan menulis aplikasi yang bergantung pada log masuk pengguna untuk berjalan dengan betul pada beberapa peringkat. Nama pengguna dan kata laluan biasanya disimpan dalam pangkalan data dan kemudian digunakan untuk pengesahan. Seperti yang kita ketahui, kata laluan tidak boleh disimpan dalam pangkalan data dalam teks biasa: Jika pangkalan data dikompromi, semua kata laluan akan dieksploitasi oleh penyerang yang berniat jahat. Inilah sebabnya mengapa kita perlu belajar bagaimana hash kata laluan.

Perhatikan bahawa kita menggunakan perkataan "hash" dan bukannya "penyulitan". Ini kerana hashing dan penyulitan adalah dua proses yang sama sekali berbeza yang sering dikelirukan.

hash

Fungsi hash mengambil rentetan (seperti mypassword123) dan menukarkannya menjadi versi rentetan yang disulitkan, yang dipanggil nilai hash. Sebagai contoh, hash mypassword123 mungkin nombor rawak dan rentetan huruf, seperti 9C87BAA223F464954940F859BCF2E233. Hash adalah fungsi sehala. Sebaik sahaja anda mempunyai sesuatu, anda mendapat rentetan panjang tetap -proses yang sukar dibalikkan.

kita boleh membandingkan dua nilai hash untuk memeriksa sama ada kedua -duanya berasal dari rentetan asal yang sama. Kemudian dalam artikel ini, kita akan melihat bagaimana untuk melaksanakan proses ini menggunakan PHP.

penyulitan

Sama seperti hash, penyulitan mengambil rentetan input dan menukarnya menjadi nombor rawak dan rentetan abjad. Walau bagaimanapun, penyulitan adalah proses yang boleh diterbalikkan -jika anda tahu kunci penyulitan. Kerana ia adalah proses yang boleh diterbalikkan, ia tidak sesuai untuk kata laluan, tetapi sesuai untuk aspek seperti pemesejan selamat ke titik.

Jika kita menyulitkan kata laluan dan bukannya hashing, dan pangkalan data yang kami gunakan diakses oleh pihak ketiga yang berniat jahat dalam beberapa cara, maka semua akaun pengguna akan terancam - ini jelas bukan senario yang baik.

Tambah garam

Kata laluan juga harus "masin" sebelum hashing. "Garam" adalah operasi yang menambah rentetan rawak ke kata laluan sebelum hashing.

Dengan menambahkan garam ke kata laluan, kita boleh menghalang serangan kamus (penyerang secara sistematik memasuki setiap perkataan dalam kamus sebagai kata laluan) dan serangan meja pelangi (penyerang menggunakan senarai hash kata laluan biasa).

Selain menambah garam, kita juga harus menggunakan algoritma yang agak selamat ketika hashing. Ini bermakna ia harus menjadi algoritma yang belum retak lagi, sebaiknya algoritma khusus dan bukannya umum (seperti SHA512).

Sehingga 2023, algoritma hash yang disyorkan ialah:

    argon2
  • scrypt
  • pbkdf2
  • pemprosesan hash dalam php

Pemprosesan hash dalam PHP telah menjadi sangat mudah sejak pengenalan fungsi

dalam Php 5.5.

Pada masa ini, ia menggunakan bcrypt secara lalai dan menyokong algoritma hash lain seperti argon2. Fungsi password_hash() juga akan menambah garam secara automatik ke kata laluan kami.

akhir, ia mengembalikan kata laluan hashed. "Kos" dan "garam" dikembalikan sebagai sebahagian daripada hash.

Cukup, kos dalam kata laluan hash merujuk kepada jumlah pengiraan yang diperlukan untuk menghasilkan hash. Ia seperti mengukur "kesukaran" membuat hash. Semakin tinggi kos, semakin besar kesukaran.

Bayangkan anda mahu membuat kek dan resipi untuk kek itu berkata "Pukul telur selama lima minit." Itulah "kos" membuat kek itu. Jika anda ingin membuat kek lebih "selamat", anda mungkin menukar resipi untuk "mengalahkan telur selama sepuluh minit." Ia mengambil masa lebih lama untuk membuat kek sekarang, yang seperti menambah "kos" membuat kek.

seperti yang kita baca dalam dokumen password_hash():

... semua maklumat yang diperlukan untuk mengesahkan hash dimasukkan. Ini membolehkan fungsi password_verify() untuk mengesahkan hash tanpa perlu menyimpan maklumat garam atau algoritma secara berasingan.

Ini memastikan bahawa kita tidak perlu menyimpan maklumat lain dalam pangkalan data untuk mengesahkan nilai hash.

Malah, nampaknya ini:

<code class="language-php"><?php
$password = "sitepoint";

$hashed_password = password_hash($password, PASSWORD_DEFAULT);

if (password_verify($password, $hashed_password)) {
    //如果输入的密码与哈希密码匹配,则登录成功
} else {
    //重定向到主页
}</code>
3

password_hash() Kesimpulan password_verify()

Untuk pengaturcara PHP, adalah penting untuk memahami perbezaan antara hashing dan penyulitan dan menggunakan hashing untuk menyimpan kata laluan untuk melindungi akaun pengguna dari serangan. Fungsi

yang diperkenalkan dalam PHP 5.5 membolehkan pengaturcara mempunyai kata laluan dengan selamat menggunakan pelbagai algoritma, termasuk Argon2 dan BCRYPT.

seperti yang dikatakan oleh Tom Butler dalam PHP & MySQL: Novice to Ninja: password_hash()

bernasib baik, PHP termasuk kaedah hashing kata laluan yang sangat selamat. Ia dicipta oleh orang -orang yang mengetahui aspek -aspek ini lebih baik daripada anda dan saya, dan ia mengelakkan pemaju seperti kita yang perlu memahami sepenuhnya isu -isu keselamatan yang mungkin timbul. Oleh itu, sangat disyorkan bahawa kami mempunyai kata laluan hashing menggunakan algoritma PHP terbina dalam dan bukannya membuat sendiri.

Pastikan untuk menyimpan ini dalam fikiran dan tetap up to date dengan algoritma hash yang disyorkan terkini untuk memastikan keselamatan terbaik permohonan anda.

soalan yang sering ditanya mengenai Hashing Kata Laluan PHP

Apakah kata laluan hashing dan mengapa penting dalam php? Hashing Kata Laluan adalah proses menukar kata laluan plaintext ke dalam rentetan aksara yang tidak dapat dipulihkan. Dalam PHP, penting kerana ia dapat melindungi kata laluan pengguna dengan menyimpannya dalam bentuk hash, menjadikannya sukar bagi penyerang untuk mendapatkan kata laluan asal.

apa algoritma hash yang harus saya gunakan untuk hash kata laluan dalam php? PHP menyediakan fungsi

dan

, dan algoritma bcrypt digunakan secara lalai. BCRYPT disyorkan kerana ia adalah pilihan hashing kata laluan yang selamat.

bagaimana hash kata laluan dalam php? Anda boleh hash kata laluan menggunakan fungsi password_hash(). Contohnya: . password_hash($password, PASSWORD_BCRYPT)

bagaimana mengesahkan kata laluan hash dalam php? Untuk mengesahkan kata laluan hash, gunakan fungsi

. Ia memeriksa jika kata laluan yang diberikan sepadan dengan versi hashed yang disimpan dalam pangkalan data. password_verify()

Bilakah hashing di php, adakah saya harus menambah garam ke kata laluan? Ya, disarankan untuk menggunakan garam unik untuk setiap kata laluan sebelum hashing. Fungsi

secara automatik menjana garam, jadi anda tidak perlu menguruskannya secara manual. password_hash()

Atas ialah kandungan terperinci Petua Pantas: Cara Hash Kata Laluan di PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn