我想将一些变量存储到客户端,目前,我几乎没有选择(javascript变量,cookie,会话),因为我想减少服务器的工作量,所以传入的参数不会检查服务器侧。
例如,
客户端
<div id="showmoney"></div>
<script>
var money=10000;
$('#showmoney').html(money);
function changemoney()
{
{ pass the variable 'money' by ajax to php...}
}
</script>
PHP方
<?
$money = $_POST['money'];
$sql = "UPDATE user_details SET money = ".$money." WHERE uid = 123";
{ do query...}
?>
有没有任何方法可以让它更安全,因为我害怕有人可以通过工具修改javascript变量(firebug?如果有,怎么做?)
非常感谢〜:)
答案 0 :(得分:2)
您不希望用户更改的每个变量(例如价格标签)都要存储在服务器上而不是客户端上。有很多方法可以更改客户端发送给您的内容,而FireBug只是最简单的工具。更复杂的工具将允许拦截和编辑每个HTTP请求..
答案 1 :(得分:2)
有没有任何方法可以让它更安全,因为我害怕有人可以通过工具修改javascript变量(firebug?如果有,怎么做?)
您永远不会信任来自客户端的传入数据。它总是可以被操纵。基本检查,例如您需要在服务器端执行的价格 - 客户端检查仅仅是为了方便用户。
此外,您显示的代码有一个SQL injection漏洞,您应该对其进行整理。
答案 2 :(得分:2)
您可以操纵存储在客户端(浏览器)中的任何内容。您的问题的解决方法是验证发送回服务器的信息是否未被篡改。
答案 3 :(得分:2)
人们可以对他们想要的页面做任何事情。
在Google Chrome调试器中(使用Ctrl + Shif + J访问),他们可以在控制台中执行以下操作:
money = 10000000000000; //Or whatever arbitrary value they choose
changemoney();
正如其他人所说,永远不要相信人们从客户端传入服务器的任何事情。服务器需要进行健全性检查。
答案 4 :(得分:1)
您必须根据安全需求调整您在客户端存储内容的愿望。敏感信息应仅在服务器上。任何精明的网络用户都可以调整javascript。通过在客户端上放置其他不太敏感的信息来节省带宽。
答案 5 :(得分:1)
您是否了解客户端数据库存储HTML5中的全新API。试图用它们找到溶剂。也许有助于您在客户端保存一些数据。