PHP および Vue.js 開発のセキュリティのベスト プラクティス: データベース インジェクションの防止
セキュリティは、アプリケーションの開発中に真剣に考慮する必要がある側面です。データベース インジェクションは一般的なセキュリティ脆弱性の 1 つで、ハッカーはユーザー入力を悪意を持ってインジェクトすることにより、データベース内のデータを取得または改ざんすることができます。 PHP および Vue.js の開発では、データベース インジェクションを防ぐために採用できるベスト プラクティスがいくつかあります。この記事では、データベース インジェクションを防ぐいくつかのテクニックを紹介し、対応するコード例を示します。
$username = $_POST['username']; $password = $_POST['password']; $sql = "SELECT * FROM users WHERE username = :username AND password = :password"; $stmt = $pdo->prepare($sql); $stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password); $stmt->execute(); $user = $stmt->fetch(PDO::FETCH_ASSOC);
上記のコードでは、名前付きプレースホルダー (:username および :password) を使用して、実際のユーザー入力を置き換えています。 PDO の bindingParam メソッドは、ユーザー入力をプレースホルダーにバインドし、入力が SQL ステートメントの一部として解釈されないようにします。
<template> <div> <input v-model="username" type="text" placeholder="Username"> <input v-model="password" type="password" placeholder="Password"> <button @click="login">Login</button> </div> </template> <script> export default { data() { return { username: '', password: '' }; }, methods: { login() { // 进一步验证用户输入,防止注入攻击 if (/^[a-zA-Z0-9]+$/.test(this.username) && /^[a-zA-Z0-9]+$/.test(this.password)) { // 验证通过,发送登录请求 // ... } } } }; </script>
上記のコードでは、正規表現 ^[a-zA-Z0-9]$ を使用してユーザー名とパスワードを制限しました。文字と数字のみを含めることができます。これにより、ユーザー入力に特殊文字や SQL ステートメントが含まれることがなくなります。
$username = mysqli_real_escape_string($conn, $_POST['username']); $password = mysqli_real_escape_string($conn, $_POST['password']); $sql = "SELECT * FROM users WHERE username = '$username' AND password = '$password'"; $result = mysqli_query($conn, $sql); $user = mysqli_fetch_assoc($result);
上記のコードでは、入力によって SQL ステートメントの構造が破壊されないように、mysqli_real_escape_string を使用してユーザー名とパスワードをエスケープしています。
要約すると、安全なコーディング手法を採用することで、データベース インジェクション攻撃を効果的に防ぐことができます。パラメータ化されたクエリ、入力の検証とフィルタリング、ユーザー入力のサニタイズとエスケープはすべて非常に重要な防御手段です。 PHP および Vue.js の開発では、開発者は常にセキュリティを最優先し、特定の状況に基づいてアプリケーション内のデータベースを保護するための適切な防御手段を選択する必要があります。
以上がPHP および Vue.js 開発のセキュリティのベスト プラクティス: データベース インジェクションの防止の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。