Petua dan langkah untuk mencegah serangan suntikan SQL dengan PHP dan CGI
Dengan perkembangan teknologi rangkaian, aplikasi web memainkan peranan yang semakin penting dalam kehidupan kita. Walau bagaimanapun, isu keselamatan rangkaian yang disertakan telah menjadi semakin menonjol. Antaranya, serangan suntikan SQL adalah kaedah serangan yang paling biasa dan merosakkan. Artikel ini akan membincangkan teknik dan langkah untuk mencegah serangan suntikan SQL dalam PHP dan CGI, serta memberikan contoh kod yang berkaitan.
1. Apakah itu serangan suntikan SQL? Serangan suntikan SQL ialah kaedah mengeksploitasi kelemahan dalam aplikasi web untuk memasukkan kod SQL berniat jahat ke dalam data yang dimasukkan oleh pengguna, dengan itu membolehkan operasi tanpa kebenaran dan akses kepada pangkalan data. Dengan cara ini, penyerang boleh mendapatkan data sensitif, menukar kandungan pangkalan data, atau menggunakannya untuk mengawal keseluruhan sistem.
// 建立与数据库的连接 $pdo = new PDO("mysql:host=localhost;dbname=database", "user", "password"); // 准备预编译语句 $statement = $pdo->prepare("SELECT * FROM users WHERE username = :username"); // 绑定参数 $statement->bindParam(':username', $username, PDO::PARAM_STR); // 执行查询 $statement->execute(); // 获取查询结果 $result = $statement->fetchAll(PDO::FETCH_ASSOC);
use DBI; # 建立与数据库的连接 my $dbh = DBI->connect("DBI:mysql:database=database;host=localhost", "user", "password"); # 准备参数化查询语句 my $sth = $dbh->prepare("SELECT * FROM users WHERE username = ?"); # 绑定参数 $sth->execute($username); # 获取查询结果 my $result = $sth->fetchrow_hashref();
// 过滤和验证用户输入 $username = $_POST['username']; if (!filter_var($username, FILTER_VALIDATE_INT)) { echo "Invalid username"; } // 对用户输入进行SQL查询 $query = "SELECT * FROM users WHERE username = " . $username; $result = mysqli_query($connection, $query);
# 处理用户输入 username = input("Enter your username: ") # 验证用户输入是否包含特殊字符 if not username.isalnum(): print("Invalid username") # 在SQL查询中使用用户输入 query = "SELECT * FROM users WHERE username = %s" % username result = cursor.execute(query)
Serangan suntikan SQL ialah salah satu serangan yang paling biasa dan merosakkan dalam aplikasi web. Untuk melindungi aplikasi daripada serangan sedemikian, terdapat beberapa petua dan langkah yang boleh kami ambil. Artikel ini merangkumi penggunaan pernyataan yang disediakan, pertanyaan berparameter, menapis dan mengesahkan input pengguna, dan pengaturcaraan defensif. Semua teknologi ini boleh membantu melindungi keselamatan pangkalan data dan sistem kami. Walau bagaimanapun, dalam aplikasi praktikal, kami juga perlu terus memberi perhatian kepada kelemahan keselamatan dan kaedah serangan baharu, dan sentiasa mengemas kini serta menambah baik langkah pertahanan kami.
Atas ialah kandungan terperinci Petua dan langkah untuk mencegah serangan suntikan SQL dalam PHP dan CGI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!