0

URL に javascript を使用して PHP サイトに iframe (偽のログイン画面を含む) を挿入する URL を配布できる攻撃を防止しようとしています。ページが読み込まれる前に、ページの URL を消去する方法は PHP で何かありますか?

URL は次のようになります。login.php?login_nav_map=%2Fv3%2Farchives%2Findex.php%22/%3E%3Cimg%20src=%22no.jpg%22%20onerror=%22document.write%28String.fromCharCode%2860,99,101,110,116,101,114,62,10,60,105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47,119,119,119,46,119,111,114,108,100,116,118,112,99,46,99,111,109,47,98,108,111,45,99,111,110,116,101,110,116,47,117,112,108,111,97,100,115,47,50,48,49,49,47,48,56,47,97,98,99,45,111,110,108,105,110,101,45,116,118,46,106,112,103,34,47,62,60,98,114,47,62,10,60,104,49,62,65,100,

そして、charコードは、私がそこに欲しくないiframeを私のページに挿入します。

4

1 に答える 1

2

あなたの質問は本当に紛らわしいので、いくつかの質問に答えようとします。

人々が iframe にロードしたくない Web ページがあります。

フレームブレイクアウトスクリプトを使用します。通常は次のようなものです

if (top.location != location) {
    top.location.href = document.location.href ;
}

人々が投稿できる Web ページがあり、誰かが iframe コードを入力してページにフレームをロードしたくない場合。

入力をサニタイズします。をご覧くださいhtmlentities。これは (特に) HTML エンティティに変換<>れるため、すべてがページに表示されますが、ブラウザーはタグをコードとして解析しません。これ以上<script>、内部のコードを実行する代わりに、ただのように表示されます。

URL パラメーターがコード内で何かを意味する Web サイトがあり、誰かが悪意のある URL をパラメーターとして入れたくない場合。何かのようなものhttp://mysite.com?foo=bar&url=somebadwebsite.com/virus.php

ブロックする URL またはドメインのブラックリストが必要です。を見parse_urlて URL の一部を取得すると、それがブラックリストに登録された配列の一部であるin_arrayかどうかを確認するために使用できます。host

URL パラメーターがページのコンテンツを制御する Web サイトがあります。http://mysite.com?foo=bar&title=Helloページに「Hello」と表示されるようなものです。誰かがそこに JS を挿入し、あなたのページがそれを実行するのは望ましくありません。

通常、これを行うのは悪い考えです。この場合、可能な値のホワイトリストが必要です。

$value = $_GET['title']
switch ($value) {
    case 'Hello':
        // do something for hello
        break;
    case 'Goodbye':
        // do something for goodbye
        break;
    default:
        // do something if it's something you don't expect/want as input
}
于 2012-09-12T15:43:46.237 に答える