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;🎜🎜🎜🎜 フォームを表示するには、HTML コードを自分で記述する代わりに CHtml::form を使用します。 CHtml::form はフォームに隠しアイテムを自動的に埋め込むことができるため、この隠しアイテムには検証に必要なランダム データが保存され、フォームの送信時に検証のためにサーバーに送信されます。 🎜🎜3. Cookie 攻撃の防止🎜🎜 Cookie を攻撃から保護することは非常に重要です。セッションIDは通常Cookieに保存されるためです。 攻撃者が有効なセッション ID を盗むと、そのセッション ID に対応するセッション情報を使用することができます。 🎜🎜ここでいくつかの注意事項があります: 🎜
- 🎜 SSL を使用して安全なチャネルを作成し、HTTPS 接続経由でのみ認証 Cookie を送信できます。このようにして、攻撃者は送信された Cookie を解読できなくなります。 🎜
- 🎜 Cookie の有効期限を設定します。すべての Cookie とセッション トークンに対して同じことを行います。これにより、攻撃される可能性が減少します。 🎜
- 🎜クロスサイト コード攻撃を防止します。これは、ユーザーのブラウザで任意のコードをトリガーする可能性があり、これらのコードによってユーザーの Cookie が漏洩する可能性があるためです。 🎜
- 🎜 Cookie が変更されたときに Cookie の内容を確認します。 🎜
$_COOKIES
は使用しないでください。 🎜rrreee🎜🎜🎜🎜 上記は、Yii Framework 公式ガイド シリーズ 51 - 特別トピック: セキュリティ対策 (セキュリティ) の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) をご覧ください。 🎜🎜🎜🎜🎜
PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

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

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

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