検索
ホームページバックエンド開発PHPチュートリアル一般的な PHP セキュリティ攻撃とその解決策

この記事では主に、一般的な PHP セキュリティ攻撃とその解決策について説明します。一般的な PHP アプリケーション セキュリティの脅威を理解することで、PHP アプリケーションが攻撃されないようにすることができます。したがって、この記事では 6 つの一般的な PHP セキュリティ攻撃をリストします。誰でも読んで学ぶことができます。

1. SQL インジェクション

SQL インジェクションは、ユーザーがフォーム フィールドに SQL ステートメントを入力して、通常の SQL 実行に影響を与える悪意のある攻撃です。 system() または exec() コマンドを通じて注入されるものもあり、これは同じ SQL インジェクション メカニズムを持ちますが、シェル コマンドのみを対象とします。

01    $username = $_POST[&#39;username&#39;];02    $query = "select * from auth where username = &#39;".$username."&#39;";03    echo $query;04    $db = new mysqli(&#39;localhost&#39;, &#39;demo&#39;, ‘demo&#39;, ‘demodemo&#39;);05    $result = $db->query($query);06    if ($result && $result->num_rows) {07        echo "<br />Logged in successfully";08    } else {09        echo "<br />Login failed";10    }

上記のコードは、最初の行でユーザーが入力した値 ($_POST['username']) をフィルターしたりエスケープしたりしません。そのため、$username に SQL ステートメントを別のものに変換するかどうかによって、クエリが失敗したり、データベースが破損したりする可能性があります。

SQL インジェクションを防ぐ

オプション:

使用mysql_real_escape_string()过滤数据
手动检查每一数据是否为正确的数据类型
使用预处理语句并绑定变量

プリペアドプリペアドステートメントを使用する

分离数据和SQL逻辑
预处理语句将自动过滤(如:转义)
把它作为一个编码规范,可以帮助团队里的新人避免遇到以上问题
01    $query = 'select name, district from city where countrycode=?';02    if ($stmt = $db->prepare($query) )03    {04        $countrycode = 'hk';05        $stmt->bind_param("s", $countrycode); 
06        $stmt->execute();07        $stmt->bind_result($name, $district);08        while ( $stmt ($stmt->fetch() ){09            echo $name.', '.$district;10            echo '<br>';11        }12        $stmt->close();13    }

2. XSS 攻撃

XSS (クロスサイトスクリプティング攻撃) は、ユーザーが Web サイトに何らかのデータを入力する攻撃です。これには、クライアントが含まれます。サイドスクリプト (通常は JavaScript)。フィルタリングせずに別の Web ページにデータを出力すると、このスクリプトが実行されます。

ユーザーが送信したテキストコンテンツを受信します

01    <?php02    if (file_exists(&#39;comments&#39;)) {03        $comments = get_saved_contents_from_file(&#39;comments&#39;);04    } else {05        $comments = &#39;&#39;;06    }07     08    if (isset($_POST[&#39;comment&#39;])) {09        $comments .= &#39;<br />&#39; . $_POST[&#39;comment&#39;];10        save_contents_to_file(&#39;comments&#39;, $comments);11    }12    >
输出内容给(另一个)用户1    <form action=&#39;xss.php&#39; method=&#39;POST&#39;>2    Enter your comments here: <br />3    <textarea name=&#39;comment&#39;></textarea> <br />4    <input type=&#39;submit&#39; value=&#39;Post comment&#39; />5    </form><hr /><br />6     7    <?php echo $comments; ?>

どうなりますか?

烦人的弹窗
刷新或重定向
损坏网页或表单
窃取cookie
AJAX(XMLHttpRequest)

XSS 攻撃を防ぐ: XSS 攻撃を防ぐには、PHP の htmlentities() 関数を使用してフィルタリングし、ブラウザに出力します。 htmlentities() の基本的な使用法は簡単ですが、利用可能な高度なコントロールが多数あります。XSS チートシートを参照してください。

3. セッションの固定

PHPSESSID が推測しにくいことを前提としたセッションのセキュリティ。ただし、PHP は Cookie または URL を介してセッション ID を受け入れることができます。したがって、被害者のなりすましには、特定の (またはその他の) セッション ID やフィッシング攻撃が使用される可能性があります。

4. セッションのキャプチャとハイジャック

これはセッションの固定と同じ考え方ですが、セッション ID を盗む必要があります。セッション ID が Cookie に保存されている場合、XSS および JavaScript を介して攻撃者によって盗まれる可能性があります。 URL にセッション ID が含まれている場合は、スニッフィングまたはプロキシ サーバーからセッション ID を取得することもできます。

セッション キャプチャとハイジャックを防ぐ

更新ID
如果使用会话,请确保用户使用SSL

5. クロスサイト リクエスト フォージェリ (CSRF)

CSRF 攻撃とは、Web サイトの信頼できるユーザーのように見えるが、意図的ではないページによって行われるリクエストを指します。次の例のように、さまざまなバリエーションがあります:

1    ![](http://example.com/single_click_to_buy.php?user_id=123&item=12345)

クロスサイト リクエスト フォージェリの防止

一般に、ユーザーがフォームから来たことを確認し、送信するすべてのフォームと一致するようにします。覚えておく必要がある点は 2 つあります:

对用户会话采用适当的安全措施,例如:给每一个会话更新id和用户使用SSL。
生成另一个一次性的令牌并将其嵌入表单,保存在会话中(一个会话变量),在提交时检查它。

6. コード インジェクション

コード インジェクションは、無効なデータを処理することによってコンピューターの脆弱性を悪用することによって引き起こされます。問題は、通常はファイルのインクルードを介して、誤って任意のコードを実行したときに発生します。コードの書き方が不十分だと、リモート ファイルが組み込まれて実行される可能性があります。多くの PHP 関数と同様に、require などの関数には URL またはファイル名を含めることができます。例:

01    <form>Choose theme:02        <select name = theme>03            <option value = blue>Blue</option>04            <option value = green>Green</option>05            <option value = red>Red</option>06        </select>07        <input type = submit>08    </form>09    <?php10        if($theme) {11            require($theme.&#39;.txt&#39;);12        }13    ?>

上の例では、ユーザーが入力したファイル名またはファイル名の一部を渡すことで、「http」で始まる URL が含まれます。 ://" 書類。

コードインジェクションの防止

过滤用户输入
在php.ini中设置禁用allow_url_fopen和allow_url_include。这将禁用require/include/fopen的远程文件。

その他の一般原則

  1. 特にWebサーバー/PHPがISPによって管理されている場合、またはWebサイトが移行/展開される可能性がある場合は、アプリケーションを保護するためにサーバー構成に依存しないでください。他の場所に移動し、将来的には他の場所から他の場所に移行/展開します。ウェブサイトのコード (HTML、JavaScript、PHP など) にセキュリティを意識したチェック/ロジックを埋め込んでください。

  2. サーバー側のセキュリティ スクリプトを設計します。
    — たとえば、単一行の実行、つまり認証とデータ サニタイズの単一ポイントを使用します。
    — たとえば、セキュリティが重要なすべてのページに PHP 関数/ファイルを埋め込んで、すべてのセキュリティを処理します。ログイン/セキュリティ ロジック チェック

  3. コードが更新され、最新のパッチが適用されていることを確認してください。

関連する推奨事項:

PHPセキュリティ例の詳細な説明

PHPによる画像の安全なアップロード

PHPセキュリティ構成レコードと一般的なエラーの詳細な概要

以上が一般的な PHP セキュリティ攻撃とその解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
セッションに関連するクロスサイトスクリプティング(XSS)攻撃からどのように保護できますか?セッションに関連するクロスサイトスクリプティング(XSS)攻撃からどのように保護できますか?Apr 23, 2025 am 12:16 AM

セッション関連のXSS攻撃からアプリケーションを保護するには、次の測定が必要です。1。セッションCookieを保護するためにHTTPonlyとセキュアフラグを設定します。 2。すべてのユーザー入力のエクスポートコード。 3.コンテンツセキュリティポリシー(CSP)を実装して、スクリプトソースを制限します。これらのポリシーを通じて、セッション関連のXSS攻撃を効果的に保護し、ユーザーデータを確保できます。

PHPセッションのパフォーマンスを最適化するにはどうすればよいですか?PHPセッションのパフォーマンスを最適化するにはどうすればよいですか?Apr 23, 2025 am 12:13 AM

PHPセッションのパフォーマンスを最適化する方法は次のとおりです。1。遅延セッション開始、2。データベースを使用してセッションを保存します。これらの戦略は、高い並行性環境でのアプリケーションの効率を大幅に改善できます。

session.gc_maxlifetime構成設定とは何ですか?session.gc_maxlifetime構成設定とは何ですか?Apr 23, 2025 am 12:10 AM

thesession.gc_maxlifettinginttinginphpdethinesthelifsessessiondata、setinseconds.1)it'sconfiguredinphp.iniorviaini_set()。 2)AbalanceSneededToAvoidPerformanceIssues andunexpectedLogouts.3)php'sgarbagecollectionisisprobabilistic、影響を受けたBygc_probabi

PHPでセッション名をどのように構成しますか?PHPでセッション名をどのように構成しますか?Apr 23, 2025 am 12:08 AM

PHPでは、session_name()関数を使用してセッション名を構成できます。特定の手順は次のとおりです。1。session_name()関数を使用して、session_name( "my_session")などのセッション名を設定します。 2。セッション名を設定した後、session_start()を呼び出してセッションを開始します。セッション名の構成は、複数のアプリケーション間のセッションデータの競合を回避し、セキュリティを強化することができますが、セッション名の一意性、セキュリティ、長さ、設定タイミングに注意してください。

セッションIDをどのくらいの頻度で再生する必要がありますか?セッションIDをどのくらいの頻度で再生する必要がありますか?Apr 23, 2025 am 12:03 AM

セッションIDは、機密操作の前、30分ごとにログイン時に定期的に再生する必要があります。 1.セッション固定攻撃を防ぐためにログインするときにセッションIDを再生します。 2。安全性を向上させるために、敏感な操作の前に再生します。 3.定期的な再生は長期的な利用リスクを減らしますが、ユーザーエクスペリエンスの重量を量る必要があります。

PHPでセッションCookieパラメーターをどのように設定しますか?PHPでセッションCookieパラメーターをどのように設定しますか?Apr 22, 2025 pm 05:33 PM

PHPのセッションCookieパラメーターの設定は、session_set_cookie_params()関数を通じて達成できます。 1)この関数を使用して、有効期限、パス、ドメイン名、セキュリティフラグなどのパラメーターを設定します。 2)session_start()を呼び出して、パラメーターを有効にします。 3)ユーザーログインステータスなど、ニーズに応じてパラメーターを動的に調整します。 4)セキュリティを改善するために、セキュアとhttponlyフラグを設定することに注意してください。

PHPでセッションを使用する主な目的は何ですか?PHPでセッションを使用する主な目的は何ですか?Apr 22, 2025 pm 05:25 PM

PHPでセッションを使用する主な目的は、異なるページ間でユーザーのステータスを維持することです。 1)セッションはsession_start()関数を介して開始され、一意のセッションIDを作成し、ユーザーCookieに保存します。 2)セッションデータはサーバーに保存され、ログインステータスやショッピングカートのコンテンツなど、さまざまなリクエスト間でデータを渡すことができます。

サブドメイン間でセッションをどのように共有できますか?サブドメイン間でセッションをどのように共有できますか?Apr 22, 2025 pm 05:21 PM

サブドメイン間でセッションを共有する方法は?一般的なドメイン名にセッションCookieを設定することにより実装されます。 1.セッションCookieのドメインをサーバー側の.example.comに設定します。 2。メモリ、データベース、分散キャッシュなど、適切なセッションストレージ方法を選択します。 3. Cookieを介してセッションIDを渡すと、サーバーはIDに基づいてセッションデータを取得および更新します。

See all articles

ホット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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Mac版

SublimeText3 Mac版

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