Petua Pengaturcaraan PHP untuk Mencegah Serangan SQL Injection
Pengenalan:
SQL injection ialah kaedah serangan aplikasi web yang biasa dilakukan oleh penyerang dengan memasukkan kod SQL berbahaya ke dalam data yang dimasukkan oleh pengguna . Untuk melindungi aplikasi kami daripada serangan suntikan SQL, kami perlu menggunakan beberapa teknik pengaturcaraan untuk menapis, melarikan diri dan mengesahkan data yang dimasukkan pengguna. Artikel ini akan membincangkan beberapa teknik pengaturcaraan PHP biasa untuk membantu kami mencegah serangan suntikan SQL.
$mysqli = new mysqli("localhost", "username", "password", "database"); if($mysqli->connect_error) { die("连接数据库失败: " . $mysqli->connect_error); } $stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ? AND password = ?"); $stmt->bind_param("ss", $username, $password); $username = $_POST['username']; $password = $_POST['password']; $stmt->execute(); $result = $stmt->get_result(); while($row = $result->fetch_assoc()) { // 处理结果集 } $stmt->close();
$dsn = 'mysql:host=localhost;dbname=database'; $username = 'username'; $password = 'password'; try { $pdo = new PDO($dsn, $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { die("连接数据库失败:" . $e->getMessage()); } $stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username AND password = :password"); $stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password); $username = $_POST['username']; $password = $_POST['password']; $stmt->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach($result as $row) { // 处理结果集 } $stmt->closeCursor();
$username = $_POST['username']; $password = $_POST['password']; if(!empty($username) && !empty($password)) { // 验证用户名和密码是否符合要求,如长度、字符等 // ... // 过滤特殊字符 $username = filter_var($username, FILTER_SANITIZE_STRING); $password = filter_var($password, FILTER_SANITIZE_STRING); // 执行SQL查询 // ... } else { die("用户名和密码不能为空"); }
Ringkasan:
Untuk mengelakkan serangan suntikan SQL, kita mesti mengambil langkah untuk menapis, melarikan diri dan mengesahkan data yang dimasukkan pengguna. Menggunakan pernyataan yang disediakan dan pertanyaan berparameter boleh menghalang serangan suntikan SQL dengan berkesan. Pada masa yang sama, pengesahan dan penapisan input juga merupakan langkah pertahanan yang penting. Dengan menggunakan petua pengaturcaraan PHP ini, kami boleh meningkatkan keselamatan aplikasi kami dan melindungi maklumat pengguna dan keselamatan pangkalan data.
Atas ialah kandungan terperinci Petua pengaturcaraan PHP untuk mengelakkan serangan suntikan SQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!