SQL インジェクション攻撃を防ぐための PHP プログラミングのヒント
はじめに:
SQL インジェクションは、Web アプリケーションを攻撃する一般的な方法です。攻撃者は、ユーザーが入力したデータに悪意のある SQL コードを挿入し、それによって不正な利益を得ることができます。データベースにアクセスしたり、悪意のある操作を実行したりする可能性があります。 SQL インジェクション攻撃からアプリケーションを保護するには、ユーザーが入力したデータをフィルタリング、エスケープ、検証するためのいくつかのプログラミング手法を採用する必要があります。この記事では、SQL インジェクション攻撃を防ぐために役立ついくつかの一般的な PHP プログラミング手法について説明します。
$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("用户名和密码不能为空"); }
要約:
SQL インジェクション攻撃を防ぐには、ユーザー入力データのフィルター、エスケープ、検証の手順を実行する必要があります。準備されたステートメントとパラメーター化されたクエリを使用すると、SQL インジェクション攻撃を効果的に防ぐことができます。同時に、入力検証とフィルタリングも重要な防御手段です。これらの PHP プログラミングのヒントを使用すると、アプリケーションのセキュリティを向上させ、ユーザー情報とデータベースのセキュリティを保護できます。
以上がSQL インジェクション攻撃を防ぐための PHP プログラミングのヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。