5

ハッカー (またはスクリプト キディー) が、ウェブサイトのコードベースのリークを利用して、私のウェブサイトを攻撃したと思います。データベース内の投稿が変更され、次の html が含まれるようになりました。

<meta http-equiv="refresh" content="0;url=http://example.com"/>

しかし、今はシステムを書き直すことはできません。このような状況が今後起こらないようにするための戦略は何ですか?

特定のドメインへのアクセスを許可するサブドメインに管理スクリプトを移行することを考えています。または、mod_security SecFilterScanPOST を使用して、http-equiv などを含むすべての投稿要求をスキャンします。または、サーバーまたはそれらすべてからの投稿要求のみを許可しますか?

ありがとうございました。

4

3 に答える 3

3

最初のステップは、コードが挿入された場所を調査することです。これは、ルート句が何であるかを特定するのに役立つ場合があります-

  1. Web サイトがデータベースからコンテンツを取得し、挿入されたタグがデータベース コンテンツの一部として取得される場合、そのサイトには SQL インジェクションの欠陥またはその他の脆弱性があり、攻撃者がコンテンツを変更できる可能性があります。

  2. タグがすべての PHP ファイルにある場合、攻撃者がファイル システムにアクセスできることを意味します。彼があなたの FTP、telnet、またはその他の管理コンソールにアクセスできるか、攻撃者が Web サイト上のファイルを変更/作成できる脆弱性が Web サイトに存在します。

  3. また、攻撃者からのアクセスを許可する脆弱性がサーバーに存在する可能性もあります。

根本原因を特定したら、それに応じて修正します =)

同じことが再び起こらないようにするための一般的なアドバイスを次に示します。

  1. コード レビュー、侵入テスト、自動スキャンのいずれかによって、Web サイトとサーバーの脆弱性を確認し、それに応じて修正します。

  2. アップデート、修正プログラム、セキュリティ パッチを速やかにインストールします。それを更新、更新、更新、更新してください...

  3. ファイル システムに適切なフォルダ アクセス許可 (読み取り/書き込み、読み取り専用、アクセスなし) を割り当て、必要な権限のみをユーザーに付与します (最小権限の原則)。

    • たとえば、アップロード フォルダーを除くすべての Web コンテンツ フォルダーに対してのみ、Web サーバー ユーザーを読み取り可能にすることを検討できます。
    • 通常、構成ファイルは、Web サーバーのユーザーが書き込み可能である必要はありません。通常、これらは管理者のみが書き込み可能です。また、そのようなファイルのコンテンツが Web サーバー経由 (つまり、Web サーバーの http:// url 経由) にアクセスできないように注意してください。それらを Web コンテンツのルート ダイレクトの外に置くのは良い考えです。
    • アップロード フォルダーを Web コンテンツのルート ディレクトリの外に置くことも良い考えです。
    • 所有者はファイルのパーミッションを自由に変更できるため、ファイルの所有者もマイニングします。
  4. サードパーティ コンポーネント (Wordpress/Joomla プラグインなど) を使用する場合は注意が必要です。発行元を信頼する場合にのみ使用してください。メインサイトからのみダウンロードしてください。それらも最新の状態に保つことを忘れないでください。必要に応じて無効にして削除します

  5. FTP、Telnet、データベース管理コンソール (例: phpMyAdmin) などの管理コンソールおよびサービスへのアクセスを制限します。それらには適切なパスワードを割り当てます。最善の方法は、承認された人以外がアクセスできないようにすることです (たとえば、ファイアウォールまたは構成で設定された IP 制限を使用するか、VPN の背後に隠します)。

    • 実際には、パスワード (特に管理者のパスワード) を送信するときは、クリア テキスト プロトコルを使用しないでください。通常、Telnet -> SSH、FTP -> SFTP/FTP、HTTP/HTTPS など、暗号化された代替手段があります。
    • インターネットからアクセスできるようにするには、データベース ポートを避ける必要があります。これが必要になるシナリオはめったにありません。ほとんどの場合、ループバック インターフェイスでリッスンするように構成します...
于 2013-02-15T09:55:56.607 に答える
2

XSS入力検証の両方について OWASP を参照してください。

入力をサニタイズしないでください-データベースにオリジナルが必要です<meta http-equiv="refresh" content="0;url=http://example.com"/>-代わりに、それを信頼できないデータとして扱い、出力に関してはエスケープ/武装解除してください。

于 2013-02-15T09:38:16.767 に答える
1

This is a lazy solution if you do not want to escape your data while reading from db (which you should).

function escape_deep(&$value)
{
 $value = htmlspecialchars($value);
}

array_walk_recursive($_GET, 'escape_deep');
array_walk_recursive($_POST, 'escape_deep');
于 2013-02-15T09:02:35.653 に答える