1

別の Web サイトからフォームを取得するコードがいくつかあります。ヘッダーの php は、URL の GET 文字列をサニタイズします。基本的に、次のようなページがあります: order.html は、javascript 関数全体を次のように貼り付けると機能します。

<?php  if (isset($_GET['url'])) {
            echo file_get_contents("http://".sanitizeString($_GET['url']));
        }
function sanitizeString($var) {
    $var = strip_tags($var);
    $var = htmlentities($var);
    return stripslashes($var);
} ?>


<html>
<body>
<p>html text still displays</p>
<script>
document.write("<div id='info'></div>");
nocache = "&nocache=" + Math.random() * 1000000
request = new ajaxRequest()
request.open("GET", "<?php echo basename($_SERVER['SCRIPT_FILENAME']); ?>?url=platform.leedhub.com/merchants/form.php?merchant_id=<?php echo $_GET['merchantid']; ?>&margin=<?php echo $_GET['affiliateid'] ?>&padding=<?php echo $_GET['URL'] ?>" + nocache, true);
request.onreadystatechange = function()
{
    if (this.readyState == 4)
    {
        if (this.status == 200)
        {
            if (this.responseText != null)
            {
                document.getElementById('info').innerHTML =
                this.responseText
            }
            else alert("Ajax error: No data received")
        }
        else alert( "Ajax error: " + this.statusText)
    }
}
request.send(null)
    function ajaxRequest()
    {
        try
        {
            var request = new XMLHttpRequest()
        }
        catch(e1)
        {
            try
            {
                request = new ActiveXObject("Msxml2.XMLHTTP")
            }
            catch(e2)
            {
                try
                {
                    request = new ActiveXObject("Microsoft.XMLHTTP")
                }
                catch(e3)
                {
                    request = false
                }
            }
        }
        return request
    }
</script>
</body>
</html>

ただし、書かれたjavascriptを外部URLからインクルードするとうまくいきません。

<?php  if (isset($_GET['url'])) {
echo file_get_contents("http://".sanitizeString($_GET['url']));
}
function sanitizeString($var) {
$var = strip_tags($var);
$var = htmlentities($var);
return stripslashes($var);
} ?>
<p>html text still displays</p>
<html>
<body>
<script src="urlget.js"></script>
</body>
</html>

403 Forbidden エラーが発生します。request.send(null) から教えてくれています。

Access Forbidden 要求されたオブジェクトにアクセスする権限がありません。読み取り保護されているか、サーバーから読み取れません。

どうすればこれを改善できるか分かりますか? 複数の Web サイトに含めることができるように、スクリプトを外部ファイルにする必要があります。

4

1 に答える 1

0

ファイルシステムのアクセス許可の問題だと思います。Web サーバーがファイルに対する読み取りアクセス権を持っていることを確認する必要がありurlget.jsます。Web サーバーのワーカーを実行しているユーザーを特定し、そのユーザーにurlget.jsファイルの読み取り権限を付与する必要があります。

于 2013-01-28T17:09:56.173 に答える