Yii Framework 公式ガイド シリーズ 51 - 特集:セキュリティ対策(セキュリティ)
1. クロスサイトスクリプティング攻撃の防止
クロスサイトスクリプティング攻撃 (XSS と呼ばれます)、つまり、Web アプリケーションがユーザーからユーザーデータを収集します。 攻撃者は多くの場合、JavaScript、VBScript、ActiveX、HTML、または Flash を脆弱な Web アプリケーションに挿入して、訪問者を混乱させ、訪問者情報を収集します。 たとえば、フォーラム システムの設計が不十分だと、ユーザー入力がチェックされずに表示される可能性があります。 攻撃者は、悪意のある JavaScript コードを投稿コンテンツに挿入する可能性があります。 このようにして、他の訪問者がこの投稿を読んだときに、これらの JavaScript コードを訪問者のコンピュータで実行できます。
XSS 攻撃を防ぐための最も重要な対策の 1 つは、 ユーザーが入力したコンテンツを表示する前のコンテンツ検査 です。 たとえば、コンテンツ内の HTML をエスケープできます。ただし、この方法ではすべての HTML タグが無効になるため、場合によってはこの方法はお勧めできません。
Yii は HTMLPurifier を統合し、HTMLPurifier クラスをカプセル化する非常に便利なコンポーネント CHtmlPurifier を開発者に提供します。効果的なレビュー、セキュリティ、ホワイトリスト機能を通じて監査対象のコンテンツからすべての悪意のあるコードを削除し、フィルタリング後にフィルタリングされたコンテンツが基準を満たしていることを確認できます。
CHtmlPurifier コンポーネントはウィジェットまたはフィルターとして使用できます。 ウィジェットとして使用すると、CHtmlPurifier はビューに表示されるコンテンツを安全にフィルタリングできます。 以下はコードサンプルです:
<?php $this->beginWidget('CHtmlPurifier'); ?> //...这里显示用户输入的内容... <?php $this->endWidget(); ?>
2. クロスサイトリクエストフォージェリ攻撃の防止
クロスサイトリクエストフォージェリ (CSRF と呼ばれます) 攻撃、つまり、攻撃者がユーザーのブラウザ時間内に悪意のある Web サイトにアクセスし、ユーザーのブラウザが信頼できる Web サイトに対して攻撃者が指定したリクエストを実行します。 たとえば、悪意のある Web サイトに画像があり、この画像の src
アドレスが銀行 Web サイト http://www.php.cn/
を指しているとします。 ユーザーが銀行の Web サイトにログインした後、この悪意のある Web ページにアクセスすると、ユーザーのブラウザは銀行の Web サイトに「攻撃者の口座に 10,000 元を送金する」という指示を送信します。 クロスサイト攻撃はユーザーが信頼する特定の Web サイトを利用しますが、CSRF 攻撃は逆に、Web サイト上のユーザーの特定のユーザー ID を利用します。 src
地址指向一个银行网站:http://www.php.cn/
。 如果用户在登陆银行的网站之后访问了这个恶意网页,那么用户的浏览器会向银行网站发送一个指令,这个指令的内容可能是“向攻击者的帐号转账10000元”。 跨站攻击方式利用用户信任的某个特定网站,而CSRF攻击正相反,它利用用户在某个网站中的特定用户身份。
要防范CSRF攻击,必须谨记一条:GET
请求只允许检索数据而不能修改服务器上的任何数据。 而POST
请求应当含有一些可以被服务器识别的随机数值,用来保证表单数据的来源和运行结果发送的去向是相同的。
Yii实现了一个CSRF防范机制,用来帮助防范基于POST
的攻击。 这个机制的核心就是在cookie中设定一个随机数据,然后把它同表单提交的POST
数据中的相应值进行比较。
默认情况下,CSRF防范是禁用的。如果你要启用它,可以编辑应用配置 中的组件中的CHttpRequest部分。
代码示例:
return array( 'components'=>array( 'request'=>array( 'enableCsrfValidation'=>true, ), ), );
要显示一个表单,请使用CHtml::form而不要自己写HTML代码。因为CHtml::form可以自动地在表单中嵌入一个隐藏项,这个隐藏项储存着验证所需的随机数据,这些数据可在表单提交的时候发送到服务器进行验证。
3. Cookie攻击的防范
保护cookie免受攻击是非常重要的。因为session ID通常存储在Cookie中。 如果攻击者窃取到了一个有效的session ID,他就可以使用这个session ID对应的session信息。
这里有几条防范对策:
您可以使用SSL来产生一个安全通道,并且只通过HTTPS连接来传送验证cookie。这样攻击者是无法解密所传送的cookie的。
设置cookie的过期时间,对所有的cookie和seesion令牌也这样做。这样可以减少被攻击的机会。
防范跨站代码攻击,因为它可以在用户的浏览器触发任意代码,这些代码可能会泄露用户的cookie。
在cookie有变动的时候验证cookie的内容。
Yii实现了一个cookie验证机制,可以防止cookie被修改。启用之后可以对cookie的值进行HMAC检查。
Cookie验证在默认情况下是禁用的。如果你要启用它,可以编辑应用配置 中的组件中的CHttpRequest部分。
代码示例:
return array( 'components'=>array( 'request'=>array( 'enableCookieValidation'=>true, ), ), );
一定要使用经过Yii验证过的cookie数据。使用Yii内置的cookies组件来进行cookie操作,不要使用$_COOKIES
GET
リクエストはデータの取得のみが許可され、サーバー上のデータを変更することはできません。 POST
リクエストには、フォーム データのソースと実行結果の宛先が同じであることを保証するために、サーバーが認識できるランダムな値が含まれている必要があります。
Yii は、POST
に基づく攻撃の防止に役立つ CSRF 防止メカニズムを実装しています。 このメカニズムの核心は、Cookie にランダムなデータを設定し、それをフォームによって送信された POST
データ内の対応する値と比較することです。
コードサンプル:
// 检索一个名为$name的cookie值 $cookie=Yii::app()->request->cookies[$name]; $value=$cookie->value; ...... // 设置一个cookie $cookie=new CHttpCookie($name,$value); Yii::app()->request->cookies[$name]=$cookie;
- 🎜 SSL を使用して安全なチャネルを作成し、HTTPS 接続経由でのみ認証 Cookie を送信できます。このようにして、攻撃者は送信された Cookie を解読できなくなります。 🎜
- 🎜 Cookie の有効期限を設定します。すべての Cookie とセッション トークンに対して同じことを行います。これにより、攻撃される可能性が減少します。 🎜
- 🎜クロスサイト コード攻撃を防止します。これは、ユーザーのブラウザで任意のコードをトリガーする可能性があり、これらのコードによってユーザーの Cookie が漏洩する可能性があるためです。 🎜
- 🎜 Cookie が変更されたときに Cookie の内容を確認します。 🎜
$_COOKIES
は使用しないでください。 🎜rrreee🎜🎜🎜🎜 上記は、Yii Framework 公式ガイド シリーズ 51 - 特別トピック: セキュリティ対策 (セキュリティ) の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) をご覧ください。 🎜🎜🎜🎜🎜

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Yii は、PHP をベースにした高性能 MVC フレームワークで、Web アプリケーションの迅速かつ効率的な開発をサポートする非常に豊富なツールと機能のセットを提供します。中でも、Yii フレームワークの RESTful API 機能は、Yii フレームワークを使用することで高性能で拡張性の高い RESTful インターフェースを簡単に構築でき、Web アプリケーションの開発を強力にサポートできるため、ますます開発者の注目と愛を集めています。 RESTfulAPI の概要 RESTfulAPI は

Web アプリケーションの急速な開発に伴い、最新の Web 開発は重要なスキルになりました。効率的な Web アプリケーションを開発するために多くのフレームワークやツールが利用できますが、その中でも Yii フレームワークは非常に人気のあるフレームワークです。 Yii は、最新のデザインパターンとテクノロジーを使用し、強力なツールとコンポーネントを提供し、複雑な Web アプリケーションの構築に最適な、高性能のコンポーネントベースの PHP フレームワークです。この記事では、Yii フレームワークを使用して Web アプリケーションを構築する方法について説明します。まずYiiフレームワークをインストールし、

Yii フレームワークのミドルウェア: アプリケーションに複数のデータ ストレージのサポートを提供する はじめに ミドルウェア (ミドルウェア) は、Yii フレームワークの重要な概念であり、アプリケーションに複数のデータ ストレージのサポートを提供します。ミドルウェアはフィルターのように機能し、アプリケーションのリクエストとレスポンスの間にカスタム コードを挿入します。ミドルウェアを通じて、リクエストを処理、検証、フィルタリングし、処理された結果を次のミドルウェアまたは最終ハンドラーに渡すことができます。 Yii フレームワークのミドルウェアは非常に使いやすいです

Yii フレームワークを使用して Web ページのキャッシュとページのチャンクを実装する手順 はじめに: Web 開発プロセス中、Web サイトのパフォーマンスとユーザー エクスペリエンスを向上させるために、多くの場合、ページのキャッシュとチャンクが必要になります。 Yii フレームワークは強力なキャッシュとレイアウト機能を提供しており、開発者が Web ページのキャッシュとページ チャンキングを迅速に実装できるようにします。この記事では、Yii フレームワークを使用して Web ページのキャッシュとページ チャンキングを実装する方法を紹介します。 1. Web ページのキャッシュをオンにする Yii フレームワークでは、設定ファイルを通じて Web ページのキャッシュをオンにすることができます。メイン設定ファイルを開きます。

近年、ゲーム業界の急速な発展に伴い、ゲームをクリアするためのゲーム戦略を模索するプレイヤーがますます増えています。したがって、ゲームガイド Web サイトを作成することで、プレイヤーはゲームガイドを入手しやすくなると同時に、プレイヤーにより良いゲーム体験を提供することができます。このような Web サイトを作成する場合、開発には Yii フレームワークを使用できます。 Yii フレームワークは、PHP プログラミング言語に基づいた Web アプリケーション開発フレームワークです。高効率、セキュリティ、強力な拡張性という特徴があり、ゲームガイドをより迅速かつ効率的に作成するのに役立ちます。

Yii フレームワーク ミドルウェア: アプリケーションにロギング機能とデバッグ機能を追加する [はじめに] Web アプリケーションを開発する場合、通常、アプリケーションのパフォーマンスと安定性を向上させるために、いくつかの機能を追加する必要があります。 Yii フレームワークは、アプリケーションがリクエストを処理する前後にいくつかの追加タスクを実行できるようにするミドルウェアの概念を提供します。この記事では、Yii フレームワークのミドルウェア機能を使用してロギングとデバッグ機能を実装する方法を紹介します。 【ミドルウェアとは】 ミドルウェアとは、アプリケーションがリクエストを処理する前後のリクエストとレスポンスの処理を指します。

Yii フレームワークでは、コントローラーはリクエストの処理において重要な役割を果たします。通常のページ リクエストの処理に加えて、コントローラーを使用して Ajax リクエストを処理することもできます。この記事では、Yii フレームワークで Ajax リクエストを処理する方法を紹介し、コード例を示します。 Yii フレームワークでは、Ajax リクエストの処理は次の手順で実行できます。 最初の手順は、コントローラー (Controller) クラスを作成することです。 Yii フレームワークが提供する基本コントローラークラス yiiwebCo を継承できます。

Yii フレームワークミドルウェアを使用した機密データの暗号化と復号化 はじめに: 最新のインターネット アプリケーションでは、プライバシーとデータ セキュリティが非常に重要な問題です。ユーザーの機密データに権限のない訪問者がアクセスできないようにするには、このデータを暗号化する必要があります。 Yii フレームワークは、機密データの暗号化と復号化の機能を実装するためのシンプルかつ効果的な方法を提供します。この記事では、Yii フレームワークのミドルウェアを使用してこれを実現する方法について説明します。 Yii フレームワークの概要 Yii フレームワークは、高性能の PHP フレームワークです。
