PHP プログラミングにおけるセキュリティに関する推奨事項とベスト プラクティス
インターネットの急速な発展に伴い、PHP は広く使用されているプログラミング言語として、ますます多くの開発者に採用されています。ただし、PHP の設計の柔軟性により、ハッカーに侵入の機会を与えてしまいます。アプリケーションとユーザーのデータを安全に保つには、いくつかのセキュリティに関する推奨事項とベスト プラクティスに従う必要があります。この記事では、PHP プログラミングのセキュリティに関する推奨事項とベスト プラクティスをいくつか紹介し、いくつかのコード例を示します。
ユーザー入力のフィルタリングとエスケープは、コード インジェクション攻撃を防ぐ重要な方法です。 PHP には、ユーザー入力をサニタイズおよびエスケープするためのいくつかの関数が用意されています。たとえば、filter_input()
関数を使用してユーザーから渡された入力データをフィルタリングし、mysqli_real_escape_string()
関数を使用してデータベースから取得したデータをエスケープします。
$filtered_email = filter_input(INPUT_GET, 'email', FILTER_SANITIZE_EMAIL); $escaped_string = mysqli_real_escape_string($connection, $string);
クロスサイト スクリプティング攻撃 (XSS) を防止するには、入力に対して出力フィルタリングを実行する必要があります。ユーザーから受け取りました。 htmlspecialchars()
関数を使用して出力をエスケープします。これにより、特殊文字が HTML エンティティに変換され、悪意のあるスクリプトの実行が防止されます。
echo htmlspecialchars($user_input);
SQL インジェクションは、一般的なセキュリティ脆弱性です。ハッカーは、悪意のあるコードを入力に挿入することにより、データベース内のデータを破壊し、盗むことができます。 SQL インジェクション攻撃を防ぐには、ユーザー入力をクエリ ステートメントに直接挿入するのではなく、プリペアド ステートメントまたはバインドされたパラメーターを使用して SQL クエリを実行する必要があります。
$stmt = $connection->prepare("SELECT * FROM users WHERE username = ?"); $stmt->bind_param("s", $username); $stmt->execute();
パスワードを平文でデータベースに保存することは非常に危険です。ユーザーのパスワードをハッシュし、ソルトを使用して保存する必要があります。 PHP は、ハッシュされたパスワードを生成する password_hash()
関数と、パスワードを検証するための password_verify()
関数を提供します。
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
機密データ (データベース認証情報、API キーなど) は安全な場所に保存し、パブリック ディレクトリに直接公開しないでください。 。機密データを構成ファイルに保存し、include
または require
ステートメントを通じて参照します。
$config = include 'config.php'; $db_user = $config['db_user'];
運用環境では、エラー プロンプトと警告メッセージをオフにすることは、ユーザーのプライバシーとアプリケーションのセキュリティを保護するための良い習慣です。これを行うには、PHP コードで error_reporting を 0 に設定するか、エラーをファイルに記録します。
error_reporting(0); // 将错误日志记录到文件 ini_set('log_errors', 1); ini_set('error_log', '/var/log/php-error.log');
送信中のデータのセキュリティ、特にユーザーのログインや支払いなどの機密性の高い操作を確保するには、データには HTTPS プロトコルを使用する必要があります。伝染 ; 感染。 。 SSL 証明書を使用して HTTPS を有効にすることができます。
// 通过检查$_SERVER['HTTPS']来判断是否使用了HTTPS协议 if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') { $url = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; } else { $url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; }
概要
PHP アプリケーションを作成するときは、常にセキュリティを念頭に置き、基本的なセキュリティに関する推奨事項とベスト プラクティスに従う必要があります。この記事では、コード インジェクション、XSS、SQL インジェクション、その他の攻撃を防ぐためのいくつかの提案を紹介し、いくつかの PHP コード例を示します。これらの提案と例が、開発者がアプリケーションとユーザーのデータを効果的に保護するのに役立つことを願っています。
以上がPHP プログラミングにおけるセキュリティに関する推奨事項とベスト プラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。