PHP xss および SQL インジェクションに関する問題の概要
脆弱性の種類はほんの数種類あり、XSS、SQL インジェクション、コマンド実行、アップロードの脆弱性、ローカル インクルージョン、リモート インクルード、権限バイパス、情報漏洩、Cookie 偽造、CSRF (クロスサイト リクエスト) などが含まれます。これらの脆弱性は PHP 言語だけのものではありません。この記事では、PHP がこれらの脆弱性を効果的に防ぐ方法を紹介するだけです。
1.xss + SQL インジェクション (xss 攻撃の詳細な紹介)
主なものは当然 XSS と SQL インジェクションです。フレームワーク タイプやパブリック ファイルを使用するフレームワークの場合は、パブリック ファイルで XSS と SQL インジェクションの統合フィルタリングを実行することをお勧めします。以下に示すように、PHP でフィルター関数を作成します。
$_REQUEST = filter_xss($_REQUEST);$_GET = filter_xss($_GET);
$_POST = filter_xss($_POST);
$_COOKIE = filter_xss($_COOKIE);
$_POST = filter_sql($_POST);
$_GET = filter_sql($_GET);
$_COOKIE = filter_sql($_COOKIE);
$_REQUEST = filter_sql($_REQUEST);
最も単純な filter_xss 関数は htmlspecialchars()
です。
最も単純な filter_sql 関数は mysql_real_escape_string()です。
もちろん、この種の filter_sql (SQL インジェクションを詳細に防止する) は文字タイプと検索タイプのインジェクションのみをフィルターできることは誰もが知っていますが、このレイヤーのフィルター処理を実行した後は数値タイプを処理する方法がないことも示しています。後は、SQL ステートメントの種類に注意するだけで十分です。intval を追加してフィルタリングする場合は、はるかに簡単になります。2. コマンド実行
コマンドを実行するには、キーワードから始めることができます。キーワードは 3 つのカテゴリに分類できます
(1) PHPコードの実行:evalなど
(2) シェルコマンドの実行: exec、passthru、system、shell_exec など
(3) ファイル処理: fwrite、fopen、mkdir など
これらのカテゴリでは、パラメータがユーザー制御可能かどうかに注意を払う必要があります。
3. 脆弱性をアップロード
アップロードの脆弱性にも注目が集まっており、その処理フローを注意深く分析する必要があります。アップロードを回避する最も安全な方法は、ファイルを保存するときにランダムな名前付けとサフィックスのホワイトリストを使用することです。 2 番目に注意すべきことは、ファイルをアップロードする場所が複数ある可能性があることです。サードパーティのエディタが特定のディレクトリに突然含まれる場合があります。
include()、include_once()、require()、require_once()、file_get_contents() などのファイル インクルードの脆弱性に関連する関数
最も一般的なのは、download.php?file=../../../etc/passwd などのファイルのダウンロード関数です。
4. 許可バイパス
許可バイパスは 2 つのカテゴリに分類できます
(1) バックグラウンドファイルへの不正アクセス。バックグラウンド ファイルにはセッション検証が含まれていないため、この問題が発生しやすくなります
(2) ユーザー分離は実装されていません。例えば、mail.php?id=23 で自分のメールを表示し、mail.php?id=24 で他の人のメールを表示するコードを書いて保存すると便利です。データテーブルではIDが一律に番号付けされており、フロントエンドに表示される場合はIDを押すだけで取り出せますが、ユーザーの隔離や所有権が特定されないため、不正アクセスが発生しやすくなります。 。
このような例は、特定の銀行の評価を行うときによく見つかります。
5. 情報漏洩
たとえば、情報漏洩は比較的リスクの低い脆弱性であると考えられており、ディレクトリのリスト化はコード監査とは関係がありません。ただし、パスの漏洩やソース コードの漏洩は防ぐ必要があります。このようなコードに遭遇しました
一見何の問題もないように見えますが、リクエストがxx.php?a[]=1になった場合、つまりパラメータが配列になった場合にエラーが発生し、パスが漏洩してしまいます。もちろん isset では判定されませんので、念のため設定ファイルでエラープロンプトをオフにするか、公開ファイルに以下のコードを追加してエラー表示機能をオフにすることをお勧めします。 :

ホット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)

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
