我使用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
值。我怎样才能保证安全?
答案 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