0

私はこの値を渡そうとしていました:

// Content to submit to php
Others string here. And this link:
http://www.youtube.com/watch?v=CUUgKj2i1Xc&feature=rec-LGOUT-exp_fresh+div-1r-2-HM

phpページに移動し、データベースに挿入します。これが私の現在のコードです:

... // javascript

var content = $("#mcontent").val();
$.ajax({
    url : '<?php echo PATH; ?>functions/save.php',
    type: 'POST',
    data: 'id=<?php echo $_GET['id']; ?>&content=' + content + '&action=save&val=<?php echo md5("secr3t" . $_SESSION['userid_id']); ?>',
    dataType: 'json',

    success: function(response) {
        if (response.status == 'success') {
            alert(response.message);
        } else {
            alert(response.message);
        }
    }
});

実際にはエラーはありませんが、データベースで保存されたのは次のとおりです。

Others string here. And this link:
http://www.youtube.com/watch?v=CUUgKj2i1Xc

私は何が問題なのか知っていると思います、問題は:

http://www.youtube.com/watch?v=CUUgKj2i1Xc&feature = rec- LGOUT -exp_fresh + div-1r-2-HM

別のPOSTデータとして「&feature=」が必要だと思います。私が試したこと:

  • アンパサンドの前にスラッシュを追加する(http://phpjs.org/functions/addslashes:303

  • Javascript HTMLエンコード/デコード関数の使用(インターネットのどこかにあります)

しかし、両方とも機能しません。他に方法はありますか?

編集:

発生する可能性のある他の問題を予測していますか?コンテンツはユーザーによるタイプ/書き込みです。つまり、ユーザーは何でも入力/書き込みできます。バックハンドでは、「mysql_real_escape_string」を含む他のチェックを行いました

4

2 に答える 2

1

jQuery の優れた点は、data パラメーターが JS オブジェクトを受け取ることができるため、クエリ文字列を手動で作成する必要がないことです。

<?php

    $data = array("id" => $_GET['id'], 
                  "action" => "save", 
                  "val" => md5("secr3t",$_SESSION['userid_id'])
                 );
    $json_data = encode_json($data);
    $json_data = str_ireplace($json_data, '</script>', '<\/script>');
    echo "var data = $json_data;";
?>
data.content = content;
$.ajax({
            url : '<?php echo PATH; ?>functions/save.php',
            type: 'POST',
            data: data,
            dataType: 'json',
于 2010-11-16T07:32:12.043 に答える
1

逃げることを学ぶ。XSSに対して脆弱です。この場合、データは URL の一部であるため、URL を指定する必要がありますurlencode()

var content = $("#mcontent").val();
$.ajax({
    url : '<?php echo PATH; ?>functions/save.php',
    type: 'POST',
    data: 'id=<?php echo urlencode($_GET['id']); ?>&content=' + urlencode(content) + '&action=save&val=<?php echo md5("secr3t" . $_SESSION['userid_id']); ?>',
    dataType: 'json',

    success: function(response) {
        if (response.status == 'success') {
            alert(response.message);
        } else {
            alert(response.message);
        }
    }
});

'注: PATH にはや などの特殊文字が含まれていないと仮定し\ます。は md5-ed であるため$_SESSION['user_id']、安全であるためエスケープする必要はありません (md5 は、0-9 と af のみを含む固定長 32 の文字列を返します。

于 2010-11-16T07:25:29.320 に答える