Workerman は、リアルタイム通信および高同時処理シナリオ向けの高性能 PHP 非同期ネットワーク プログラミング フレームワークです。セキュリティ保護はアプリケーション設計の重要な部分であり、Workerman のセキュリティ保護の実装方法には主に次のようなものがあります。以下では詳細を紹介し、コード例を示します。
SQL インジェクションとは、攻撃者がデータベース上で不正な操作を実行したり、機密情報を取得したりするために、悪意のある SQL コードをアプリケーションに挿入することを意味します。 Workerman では、PDO プリペアド ステートメントを使用して SQL インジェクション攻撃を防ぐことができます。つまり、プログラム内で ? プレースホルダを使用して、動的に結合された SQL ステートメント内のパラメータを置き換えます。
以下は、PDO プリペアド ステートメントを使用したサンプル コードです:
<?php //连接数据库 $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); //准备SQL语句,使用?作为占位符 $stmt = $dbh->prepare('SELECT * FROM user WHERE username = ? AND password = ?'); //执行SQL语句,传入参数数组 $stmt->execute(array($username, $password)); //遍历结果集 while ($row = $stmt->fetch()) { //处理数据 } ?>
悪意のあるスクリプト コードをシステムに挿入して、盗んだり改ざんしたりします。ユーザーの機密情報を扱います。 Workerman では、htmlentities() 関数を使用して、ユーザーが入力したすべての特殊文字を HTML エンティティにエスケープし、悪意のあるスクリプト コードの実行を防ぐことができます。
以下は、htmlentities() 関数を使用したサンプル コードです。
<?php function safe_echo($text) { return htmlentities($text, ENT_QUOTES, 'UTF-8'); } //输出用户输入的内容 echo "Your comment: " . safe_echo($_POST['comment']); ?>
CSRF 攻撃は、攻撃者がユーザーを悪用するときに発生します。ブラウジング サーバーの認証メカニズムを使用して悪意のあるリクエストをアプリケーションに送信し、ユーザーの ID になりすまして違法な操作を実行します。 Workerman では、トークン検証を使用して CSRF 攻撃を防ぐことができます。つまり、ランダムに生成されたトークンが各フォームに追加されるため、フォームを送信するときにトークンが正しいかどうかを確認する必要があります。トークンが正しくない場合、リクエストは拒否されます。
次はトークン検証を使用したサンプル コードです:
<?php session_start(); //生成随机token $token = md5(rand()); //将token保存到session中 $_SESSION['token'] = $token; //在表单中添加token echo '<form method="post" action="submit.php">'; echo '<input type="hidden" name="token" value="' . $safe_token . '" />'; //其他表单控件 echo '</form>'; //处理表单提交 if ($_SERVER['REQUEST_METHOD'] === 'POST') { //验证token是否正确 if ($_POST['token'] !== $_SESSION['token']) { //token不正确,拒绝请求 die('Invalid token'); } //其他表单数据处理 } ?>
上記は、Workerman ドキュメント内のセキュリティ保護の実装方法とコード例の紹介です。開発者がより適切に保護できるようになれば幸いです。アプリケーションのセキュリティです。
以上がWorkerman ドキュメントにおけるセキュリティ保護の実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。