У меня есть очень простой скрипт, который позволяет пользователю указывать URL любого сайта. Сценарий заменяет URL-адрес атрибута «data» в теге объекта для отображения сайта выбора пользователя внутри объекта на странице 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";
}
?>
Редактировать: (подробнее)
Это НЕ предназначено для прокси. Я позволяю пользователям решать, какой веб-сайт загружается в тег объекта (аналогично iframe). Единственное, что собирается прочитать php - это тег title из входного URL, чтобы его можно было загрузить в заголовок моего сайта. (Не беспокойтесь, это не обманывает пользователя) Хотя он может отображать заголовок любого сайта, он не будет обходить никакие фильтры любым другим способом.
Я также знаю об уязвимостях, связанных с тем, что я делаю, поэтому я смотрю на проверку.