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

我认为它将“&feature=”作为另一个 POST 数据。我试过的:

但两者都不起作用。你有其他方法吗?

编辑:

您预见到可能发生的任何其他问题吗?内容由用户输入/写入。这意味着,用户可以输入/写任何东西。在反手,我做了其他检查,包括“mysql_real_escape_string”

4

2 回答 2

1

学会逃避。你很容易受到XSS的攻击。在这种情况下,您的数据是 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 不包含特殊字符'\. 由于$_SESSION['user_id']是 md5-ed,所以不需要转义,因为它是安全的(md5 返回一个固定长度为 32 的字符串,只包含 0-9 和 af.

于 2010-11-16T07:25:29.320 回答
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 回答