通过ajax发布rel值

时间:2014-02-28 09:47:04

标签: php jquery ajax security

我使用rel=""传递值来插入页面,如下所示:

Html 代码

<p>post 1</p> 
<a href="" rel="<? echo $id_post; ?>">Like</a>
<br />
<p>post 2</p> 
<a href="" rel="<? echo $id_post; ?>">Like</a>
<br />
<p>post 3</p> 
<a href="" rel="<? echo $id_post; ?>">Like</a>

我通过jquery得到这样的rel值:

$(a).click(function(){
var rel = $(this) .attr('rel');
});

在提交页面中,我有这个:

<?
//here is the value
$post_id = $_POST['rel'];
?>

但任何人都可以更改Google Chrome中的rel值。我怎样才能保证安全?

2 个答案:

答案 0 :(得分:0)

您可以在创建时将rel值分配给click事件处理程序,以便在单击时实际不会获取它...

$("a.like-link").each(function() {
    var rel = this.rel;
    $(this).on("click", function(e) {
        e.preventDefault();
        alert(rel);
    });
});

<强> jsfiddle example...

但您应该知道,这不会阻止人们将任何他们想要的内容发送到您的服务器。任何能够“知道”足以在你的代码中看到你在帖子中使用rel值的人都知道足以关闭你的点击处理程序并添加他们自己的。您可以做 nothing 来阻止人们在客户端进行更改。对于潜在的黑客来说,你可以更加麻烦。

答案 1 :(得分:0)

永远,永远,永远不信任客户端!你可以做一些修改,当然,从客户端做一些工作,但最后任何其他普通开发人员也可以改变它。 您可以通过salt和md5加密闪存数据,攻击者可以查看请求的数据,它会被加密,但仍然可以修改。

始终检查来自服务器的Ajax请求,使用Javascript执行一些安全代码,但也要在PHP中检查它。如果您发送某种依赖于用户的信息,请在PHP中查看会话...

  

请记住,您始终可以检查和保护请求   服务器端。您只需要正确的系统结构。

始终使用 POST 方法。这样就可以阻止对服务器文件的直接访问。

如果用户想要点击第一个帖子之类的按钮并将按钮rel更改为2,他/她会自动评价第二篇文章而你无法避免。您可以避免对数据库中不存在的文章进行评级,并分别检查SQL和其他错误。

另一方面,就目前而言,如果用户从浏览器中更改某些仅影响他/她信息的代码(除了余额和此类事物,可以从中检查),这种习惯不被认为是黑客行为。 PHP很容易)。 想象一下,源文件与浏览器显示的内容完全相同。因此,让他/她做他们想做的事情,你必须保护其他用户数据,你的系统,数据库等。

  

最重要的一点是,永远不要从Javascript发送用户会话和用户数据,总是使用SESSIONS

相关问题