ユーザーが任意のサイトの URL を指定できるようにするこの非常に単純なスクリプトがあります。このスクリプトは、オブジェクト タグの "data" 属性の URL を置き換えて、HTML ページのオブジェクト内にユーザーが選択したサイトを表示します。
コードが表示されることに気付いたので、ユーザーがオブジェクト内のサイトからページをロードできないように、入力を検証するにはどうすればよいですか。
コード:
<?php
$url = 'http://www.google.com';
if (array_key_exists('_check', $_POST)) {
$url = $_POST['url'];
}
//gets the title from the selected page
$file = @ fopen(($url),"r") or die ("Can't read input stream");
$text = fread($file,16384);
if (preg_match('/<title>(.*?)<\/title>/is',$text,$found)) {
$title = $found[1];
} else {
$title = "Untitled Document";
}
?>
編集:(詳細)これはプロキシを意図したものではありません。どの Web サイトをオブジェクト タグにロードするかをユーザーが決定できるようにしています (iframe に似ています)。PHP が読み取る唯一のものは、入力 URL からのタイトル タグであるため、サイトのタイトルに読み込むことができます。(ユーザーをだまさないように心配しないでください) どんなサイトのタイトルも表示するかもしれませんが、それ以外の方法でフィルターをバイパスすることはありません。
また、私が行っていることに関連する脆弱性も認識しているため、検証を検討しています。