Php 通过ajax发布rel值

Php 通过ajax发布rel值,php,jquery,ajax,security,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>pos

我使用
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>
在提交页面中,我有以下内容:

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


但是任何人都可以在谷歌浏览器中更改
rel
值。如何使其安全?

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

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


不过,您应该知道,这不会阻止人们向您的服务器发送他们想要的任何内容。任何一个“知道”到能够在代码中看到您在帖子中使用rel值的人也会知道关闭您的点击处理程序并添加他们自己的点击处理程序。您无法阻止人们在客户端进行更改。你可以让潜在的黑客更麻烦。

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

始终检查来自服务器的Ajax请求,使用Javascript编写一些安全代码,但也要在PHP中进行检查。如果您发送的某些信息取决于用户,请使用PHP中的会话进行检查

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

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

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

另一方面,就目前而言,如果用户从浏览器中更改某种只影响他/她的信息的代码(除了balance之类的东西,可以很容易地从PHP中检查),则这种习惯不被认为是黑客行为。 想象一下,源文件和浏览器显示的一样漂亮。所以,让他/她做他们想做的事情,你必须保护其他用户的数据、你的系统、数据库等等

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


可以通过在服务器端对POST'ed rel值进行额外检查。。!
$("a.like-link").each(function() {
    var rel = this.rel;
    $(this).on("click", function(e) {
        e.preventDefault();
        alert(rel);
    });
});