【发布时间】:2009-02-23 07:15:18
【问题描述】:
我有一个非常简单的脚本,它允许用户指定任何站点的 url。该脚本替换了对象标记上的“数据”属性的 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";
}
?>
编辑:(更多细节) 这并不意味着成为代理。我让用户决定将哪个网站加载到对象标签中(类似于 iframe)。 php 唯一要读取的是来自输入 url 的标题标签,因此它可以加载到我网站的标题中。 (别担心它不会欺骗用户)虽然它可以显示任何网站的标题,但它不会以任何其他方式绕过任何过滤器。
我也知道我正在做的事情涉及的漏洞,这就是我研究验证的原因。
【问题讨论】:
标签: php html validation object-tag