我已经使用cURL解决方案来解决XSS,但是它存在问题。 我的proxy.php文件内容是: -
<?php
$url = "http://www.yahoo.com";
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
?>
这就是我试图执行php脚本的方式
$("#tempButton").click(function(){
$("#pageContent").load('http://localhost:8080/proof/proxy.php',function() {
var t = $("#pageContent").html();
alert(t);
});
});
但是变量t显示了proxy.php文件的内容,而期望它显示在proxy.php文件中设置的yahoo.com的内容。我做的事情很傻。 #FirstTimePHP
答案 0 :(得分:1)
由于变量t显示文件的内容,服务器软件不得将脚本识别为PHP。
有几个原因可能会发生这种情况。没有开放标签将是1,但你当然有这些。
另一个可能的原因是php尚未作为模块加载到服务器软件中。
另一个可能的原因是服务器不解析扩展名为php的文件(这是可配置的)。
你应该从基础开始。忽略javascript,而是手动调用url,看看你得到了什么。您可能会看到代码。
如果发生这种情况,请确保将服务器软件(通常是apache)设置为识别扩展名php与php模块相关联。最后确保PHP实际上已正确安装。
答案 1 :(得分:1)
让你的proxy.php像这样。
<?php
if(in_array('curl', get_loaded_extensions())) {
$url = "http://www.yahoo.com";
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
}
else {
echo 'No cUrl here';
}
?>