ホームページ php教程 php手册 PHP xss および SQL インジェクションに関する問題の概要

PHP xss および SQL インジェクションに関する問題の概要

Jun 21, 2016 am 08:49 AM
cookie filter php sql xss

脆弱性の種類はほんの数種類あり、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 では判定されませんので、念のため設定ファイルでエラープロンプトをオフにするか、公開ファイルに以下のコードを追加してエラー表示機能をオフにすることをお勧めします。 :



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPの継続的な使用:その持久力の理由 PHPの継続的な使用:その持久力の理由 Apr 19, 2025 am 12:23 AM

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

session_start()が複数回呼び出されるとどうなりますか? session_start()が複数回呼び出されるとどうなりますか? Apr 25, 2025 am 12:06 AM

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

IISとPHPの互換性:ディープダイビング IISとPHPの互換性:ディープダイビング Apr 22, 2025 am 12:01 AM

IISとPHPは互換性があり、FastCGIを通じて実装されています。 1..phpファイル要求を構成ファイルを介してFastCGIモジュールに転送します。 2. FASTCGIモジュールは、PHPプロセスを開始して、パフォーマンスと安定性を改善するための要求を処理します。 3。実際のアプリケーションでは、構成の詳細、エラーデバッグ、パフォーマンスの最適化に注意する必要があります。

SQL対MySQL:2つの関係を明確にします SQL対MySQL:2つの関係を明確にします Apr 24, 2025 am 12:02 AM

SQLはリレーショナルデータベースを管理するための標準言語であり、MySQLはSQLを使用するデータベース管理システムです。 SQLは、CRUD操作を含むデータベースと対話する方法を定義しますが、MySQLはSQL標準を実装し、ストアドプロシージャやトリガーなどの追加機能を提供します。

session_start()関数の重要性は何ですか? session_start()関数の重要性は何ですか? May 03, 2025 am 12:18 AM

session_start()iscrucialinphpformangingusersions.1)itInitiateSanewsessionifnoneExists、2)resumesanexistingsession、および3)SetSessionCookieforcontinuityAcrossRequests、ApplicationslicationSliviseSlikeUserauthicationAnticatent。

作曲家:AIを介したPHP開発の援助 作曲家:AIを介したPHP開発の援助 Apr 29, 2025 am 12:27 AM

AIは、作曲家の使用を最適化するのに役立ちます。特定の方法には次のものが含まれます。1。依存関係管理の最適化:AIは依存関係を分析し、最適なバージョンの組み合わせを推奨し、競合を減らします。 2。自動コード生成:AIは、ベストプラクティスに準拠したComposer.jsonファイルを生成します。 3.コードの品質を改善する:AIは潜在的な問題を検出し、最適化の提案を提供し、コードの品質を向上させます。これらの方法は、開発者が効率とコードの品質を向上させるのに役立つ機械学習および自然言語処理技術を通じて実装されています。

Laravelの使用:PHPでWeb開発を合理化します Laravelの使用:PHPでWeb開発を合理化します Apr 19, 2025 am 12:18 AM

Laravelは、次のようなWeb開発プロセスを最適化します。1。ルーティングシステムを使用してURL構造を管理します。 2。ブレードテンプレートエンジンを使用して、ビュー開発を簡素化します。 3.キューを介して時間のかかるタスクを処理します。 4. Eloquentormを使用して、データベース操作を簡素化します。 5.ベストプラクティスに従って、コードの品質と保守性を向上させます。

See all articles