0

何が起こっているのかわからないという本当に奇妙なエラーに遭遇しました。

次のように呼び出される1つの変数を使用して、POST ajax呼び出しを作成しpasswordています。

JavaScript

$.ajax({
    type: 'POST',
    url: '/test.php',
    data : {
        password : '123\''
    },
    dataType: 'text'
})
.done(function (response) {
    console.debug('success');
})
.fail(function (err,textStatus,errorThrown) {
    console.debug('fail');
});

PHP

<?php

$password = $_POST['password'];
echo $password;

?>

これは 403 Forbidden エラーで失敗します。これは、変数にエンコードされていpasswordない一重引用符が含まれており、デフォルトで $.ajax が使用application/x-www-form-urlencodedされているためだと思います。ただし、変数の名前を別の名前に変更するとtext、エラーは発生しません。

これを Linux 上の XAMPP と実稼働サーバー (Namecheap.com からレンタル) の両方でテストしました。エラーは後者でのみ発生します。どちらのサーバーも Apache を使用しています。

そのため、変数名には何らかの意味があると思いましたが、サーバーの構成によって JavaScript の変数名にそのような制限を課す方法は聞いたことがありません。あるいは、他の何かによって行われているのかもしれません。ここで何が起きてるの?これを気にするのをやめて、別の変数名を選択する必要がありますか?

4

2 に答える 2

0

これは、Apache の前にある、またはモジュールとしてインストールされる SQL インジェクション防止フィルターになります。ファイルをチェックして.htaccess、そこに何もないことを確認してから、ホスティングプロバイダーに相談してください.

于 2013-06-05T14:19:20.743 に答える