この記事では、YII Frameworkフレームワークのセキュリティソリューションについて説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
「ハッカー」が蔓延する時代において、Web アプリケーションのセキュリティ問題は非常に重要です。攻撃をある程度防ぐために、YII は攻撃を防ぐためのソリューションをいくつか提供します。もちろん、ここで議論されている安全性は一方的なものですが、一見の価値はあります。
公式の解決策は次のとおりです
1. クロスサイトスクリプティング攻撃の防止
クロスサイト スクリプティング攻撃 (略して XSS)。Web アプリケーションがユーザーからユーザー データを収集します。 攻撃者は多くの場合、JavaScript、VBScript、ActiveX、HTML、または Flash を脆弱な Web アプリケーションに挿入して、訪問者を混乱させ、訪問者情報を収集します。 たとえば、フォーラム システムの設計が不十分だと、ユーザー入力がチェックされずに表示される可能性があります。 攻撃者は、悪意のある JavaScript コードを投稿コンテンツに挿入する可能性があります。 このようにして、他の訪問者がこの投稿を読んだときに、これらの JavaScript コードを訪問者のコンピュータで実行できます。
XSS 攻撃を防ぐための最も重要な対策の 1 つは、ユーザーが入力したコンテンツを表示する前にコンテンツ検査を実行することです。 たとえば、コンテンツ内の HTML をエスケープできます。ただし、この方法ではすべての HTML タグが無効になるため、場合によってはこの方法はお勧めできません。
Yii は HTMLPurifier を統合し、HTMLPurifier クラスをカプセル化する非常に便利なコンポーネント CHtmlPurifier を開発者に提供します。効果的なレビュー、セキュリティ、ホワイトリスト機能を通じて監査対象のコンテンツからすべての悪意のあるコードを削除し、フィルタリング後にフィルタリングされたコンテンツが基準を満たしていることを確認できます。
CHtmlPurifier コンポーネントはウィジェットまたはフィルターとして使用できます。 ウィジェットとして使用すると、CHtmlPurifier はビューに表示されるコンテンツを安全にフィルタリングできます。 コード例は次のとおりです:
リーリー2. クロスサイトリクエストフォージェリ攻撃の防止
クロスサイト リクエスト フォージェリ (CSRF と呼ばれる) 攻撃。つまり、ユーザーのブラウザが悪意のある Web サイトにアクセスすると、攻撃者はユーザーのブラウザに、信頼できる Web サイトに対して攻撃者が指定したリクエストを開始させます。 たとえば、悪意のある Web サイトに画像があり、この画像の src アドレスが銀行の Web サイト http://bank.example/withdraw?transfer=10000&to=someone を指しているとします。 ユーザーが銀行の Web サイトにログインした後、この悪意のある Web ページにアクセスすると、ユーザーのブラウザは銀行の Web サイトに「攻撃者の口座に 10,000 元を送金する」という指示を送信します。 クロスサイト攻撃はユーザーが信頼する特定の Web サイトを利用しますが、CSRF 攻撃は逆に、Web サイト上のユーザーの特定のユーザー ID を利用します。
CSRF 攻撃を防ぐには、GET リクエストはデータの取得のみが許可されており、サーバー上のデータを変更することはできないということを覚えておく必要があります。 POST リクエストには、フォーム データのソースと実行結果の宛先が同じであることを保証するために、サーバーが認識できるいくつかのランダムな値が含まれている必要があります。
Yii は、POST ベースの攻撃の防止に役立つ CSRF 防止メカニズムを実装しています。 このメカニズムの核心は、Cookie にランダムなデータを設定し、それをフォームによって送信された POST データ内の対応する値と比較することです。
デフォルトでは、CSRF 防止は無効になっています。これを有効にしたい場合は、アプリケーション構成内のコンポーネントの CHttpRequest セクションを編集します。
コード例:
リーリーフォームを表示するには、HTML コードを自分で記述する代わりに、CHtml::form を使用します。 CHtml::form はフォームに隠しアイテムを自動的に埋め込むことができるため、この隠しアイテムには検証に必要なランダム データが保存され、フォームの送信時に検証のためにサーバーに送信されます。
3. Cookie 攻撃の防止
Cookie を攻撃から保護することは非常に重要です。セッションIDは通常Cookieに保存されるためです。 攻撃者が有効なセッション ID を盗むと、そのセッション ID に対応するセッション情報を使用することができます。
予防策は次のとおりです:
SSL を使用して安全なチャネルを作成し、HTTPS 接続経由でのみ認証 Cookie を送信できます。このようにして、攻撃者は送信された Cookie を解読できなくなります。
Cookie の有効期限を設定し、すべての Cookie とセッション トークンに対して同じことを行います。これにより、攻撃される可能性が減少します。
クロスサイトコード攻撃を防止します。これは、ユーザーのブラウザで任意のコードをトリガーし、ユーザーの Cookie を漏洩する可能性があるためです。
Cookieが変更されたときにCookieの内容を確認します。
Yii は Cookie が変更されるのを防ぐために Cookie 検証メカニズムを実装しています。有効にすると、Cookie 値の HMAC チェックを実行できるようになります。
Cookieの検証はデフォルトでは無効になっています。これを有効にしたい場合は、アプリケーション構成内のコンポーネントの CHttpRequest セクションを編集します。
コード例:
リーリー必ずYiiによって検証されたCookieデータを使用してください。 Cookie 操作には Yii の組み込み Cookie コンポーネントを使用します。 $_COOKIES は使用しません。
// 检索一个名为$name的cookie值 $cookie=Yii::app()->request->cookies[$name]; $value=$cookie->value; ...... // 设置一个cookie $cookie=new CHttpCookie($name,$value); Yii::app()->request->cookies[$name]=$cookie;
更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。