Bermula dengan Pengesahan Laman Web
Pengesahan berasaskan borang ialah asas keselamatan web moden, menyediakan cara yang mesra pengguna untuk individu mengakses kawasan tapak web yang dilindungi. Kaedah ini melibatkan penggunaan borang di mana pengguna memasukkan bukti kelayakan mereka untuk mendapatkan akses, memastikan hanya individu yang diberi kuasa boleh meneruskan.
Dalam panduan ini, kami akan meneroka aspek penting dalam pengesahan berasaskan borang, daripada log masuk dan keluar, kepada menguruskan kuki, dan memastikan penyimpanan kata laluan selamat. Sama ada anda sedang membina tapak baharu atau mengemas kini tapak sedia ada, amalan terbaik ini akan membantu anda melaksanakan mekanisme pengesahan yang mantap.
Perintah | Penerangan |
---|---|
session_start() | Memulakan sesi baharu atau menyambung semula sesi sedia ada, membolehkan anda menyimpan pembolehubah sesi. |
$conn->connect_error | Semak sama ada terdapat ralat semasa membuat sambungan ke pangkalan data. |
$conn->query($sql) | Melaksanakan pertanyaan terhadap pangkalan data. |
$result->num_rows | Mengembalikan bilangan baris dalam set hasil daripada pertanyaan pangkalan data. |
header("Location: welcome.php") | Menghantar pengepala HTTP mentah untuk mengubah hala pengguna ke halaman yang ditentukan. |
document.forms["loginForm"]["username"].value | Mengakses nilai medan input nama pengguna dalam borang bernama "loginForm" dalam JavaScript. |
alert() | Memaparkan dialog makluman dengan mesej tertentu dalam pelayar web. |
Memahami Perlaksanaan
Skrip yang disediakan menunjukkan pelaksanaan asas pengesahan berasaskan borang menggunakan HTML, PHP dan JavaScript. Borang HTML menangkap pengguna username dan password input dan menghantarnya ke skrip PHP untuk pengesahan. Skrip PHP bermula dengan session_start() untuk memulakan sesi. Ia kemudian mendapatkan semula yang disiarkan username dan password, dan semak ini terhadap bukti kelayakan yang disimpan dalam pangkalan data. Jika bukti kelayakan adalah betul, ia menetapkan pembolehubah sesi dan mengubah hala pengguna ke halaman alu-aluan menggunakan header("Location: welcome.php"). Jika bukti kelayakan tidak betul, ia memaparkan mesej ralat.
Skrip JavaScript menyediakan pengesahan borang sisi klien, memastikan kedua-dua username dan password medan diisi sebelum borang diserahkan. Ia mengakses nilai borang menggunakan document.forms["loginForm"]["username"].value dan document.forms["loginForm"]["password"].value. Jika mana-mana medan kosong, ia memberi amaran kepada pengguna dan menghalang penyerahan borang. Pra-pengesahan ini membantu meningkatkan pengalaman pengguna dengan menangkap ralat awal dan mengurangkan beban pelayan yang tidak perlu.
Pelaksanaan Pengesahan Berasaskan Borang Asas
HTML dan PHP untuk Pengesahan Berasaskan Borang
<!DOCTYPE html>
<html>
<head>
<title>Login Form</title>
</head>
<body>
<form action="authenticate.php" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="username"><br>
<label for="password">Password:</label>
<input type="password" id="password" name="password"><br>
<input type="submit" value="Login">
</form>
</body>
</html>
Skrip PHP untuk Mengendalikan Log Masuk
PHP untuk Pengesahan Bahagian Pelayan
<?php
session_start();
$username = $_POST['username'];
$password = $_POST['password'];
// Database connection and selection
$conn = new mysqli('localhost', 'root', '', 'auth_db');
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Check credentials
$sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$_SESSION['username'] = $username;
header("Location: welcome.php");
} else {
echo "Invalid login credentials";
}
?>
JavaScript untuk Pengesahan Borang Sebelah Pelanggan
JavaScript untuk Mengesahkan Borang Log Masuk
<!DOCTYPE html>
<html>
<head>
<title>Login Validation</title>
<script>
function validateForm() {
var username = document.forms["loginForm"]["username"].value;
var password = document.forms["loginForm"]["password"].value;
if (username == "" || password == "") {
alert("Username and Password must be filled out");
return false;
}
}
</script>
</head>
<body>
<form name="loginForm" action="authenticate.php" onsubmit="return validateForm()" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="username"><br>
<label for="password">Password:</label>
<input type="password" id="password" name="password"><br>
<input type="submit" value="Login">
</form>
</body>
</html>
Topik Lanjutan dalam Pengesahan Berasaskan Borang
Satu aspek penting dalam pengesahan berasaskan borang ialah penggunaan token untuk mencegah Pemalsuan Permintaan Merentas Tapak (CSRF). Serangan CSRF berlaku apabila tapak web berniat jahat menipu pengguna untuk menyerahkan permintaan ke tapak lain yang mana ia disahkan. Untuk mengelakkan ini, pembangun boleh menggunakan token. Apabila pengguna menyerahkan borang, token unik dijana dan disertakan dalam data borang. Pelayan kemudiannya mengesahkan token ini untuk memastikan permintaan itu sah.
Satu lagi elemen penting ialah pengurusan kata laluan. Menyimpan kata laluan dengan selamat adalah penting untuk melindungi data pengguna. Adalah disyorkan untuk menggunakan algoritma pencincangan seperti bcrypt untuk mencincang kata laluan sebelum menyimpannya dalam pangkalan data. Ini memastikan bahawa walaupun pangkalan data dikompromi, kata laluan kekal selamat. Selain itu, melaksanakan semakan kekuatan kata laluan dan pengesahan dua faktor boleh meningkatkan lagi keselamatan.
Soalan Lazim tentang Pengesahan Berasaskan Borang
- Apakah pengesahan berasaskan borang?
- Pengesahan berasaskan borang ialah kaedah di mana pengguna log masuk dengan mengisi borang dengan kelayakan mereka, yang kemudiannya disahkan oleh pelayan.
- Bagaimanakah saya boleh melindungi kata laluan dalam sistem pengesahan saya?
- Gunakan algoritma pencincangan yang kuat seperti bcrypt untuk mencincang kata laluan sebelum menyimpannya dalam pangkalan data.
- Apakah CSRF dan bagaimana saya boleh mencegahnya?
- CSRF adalah singkatan dari Cross-Site Request Forgery. Cegahnya dengan menggunakan token unik untuk setiap penyerahan borang dan mengesahkan token ini di bahagian pelayan.
- Apakah peranan kuki dalam pengesahan berasaskan borang?
- Kuki menyimpan maklumat sesi, membolehkan pengguna kekal log masuk. Gunakan bendera selamat dan HttpOnly untuk melindungi kuki.
- Bagaimanakah SSL/HTTPS meningkatkan pengesahan berasaskan borang?
- SSL/HTTPS menyulitkan data yang dihantar antara klien dan pelayan, melindungi maklumat sensitif seperti bukti kelayakan log masuk daripada dipintas.
- Apakah soalan rahsia dan adakah ia selamat?
- Soalan rahsia digunakan untuk pemulihan kata laluan, tetapi ia biasanya tidak selamat kerana kebolehramalan jawapan. Gunakan kaedah lain seperti pengesahan e-mel.
- Bagaimanakah kotak pilihan "Ingat Saya" berfungsi?
- Kotak pilihan "Ingat Saya" menyimpan token log masuk berterusan dalam kuki, membolehkan pengguna kekal log masuk antara sesi. Pastikan token ini dilaksanakan dengan selamat.
- Apakah OpenID dan bagaimana ia berkaitan dengan pengesahan berasaskan borang?
- OpenID ialah protokol pengesahan yang membenarkan pengguna log masuk menggunakan bukti kelayakan daripada perkhidmatan lain, memudahkan proses pengesahan.
- Mengapa penting untuk menyemak kekuatan kata laluan?
- Menyemak kekuatan kata laluan memastikan pengguna mencipta kata laluan yang kukuh dan selamat yang kurang terdedah kepada serangan.
Pemikiran Akhir tentang Pengesahan Berasaskan Borang
Melaksanakan pengesahan berasaskan borang yang selamat adalah penting untuk melindungi data pengguna dan mengekalkan integriti aplikasi web. Dengan mengikuti amalan terbaik seperti menggunakan SSL, mengurus kuki dengan betul dan menyimpan kata laluan dengan selamat, pembangun boleh meningkatkan keselamatan tapak mereka dengan ketara. Selain itu, menyepadukan ciri seperti perlindungan CSRF dan semakan kekuatan kata laluan membantu mencegah serangan biasa dan meningkatkan pengalaman pengguna. Panduan komprehensif ini menyediakan pengetahuan asas dan skrip praktikal yang diperlukan untuk menyediakan sistem pengesahan yang mantap.