Javascript 如何保护html值

Javascript 如何保护html值,javascript,php,html,json,Javascript,Php,Html,Json,我正在从数据库中打印一个ID,以便创建一个带有该ID的SQL语句内部联接。因此,问题是“用户”可以从调试工具中更改它,从而轻松“破解”站点 请查看: <select name="brand"> <?php # Print brands names for ($i=0; $i < count($brandsql); $i++) { print '<option value="' . $brandsql[$i]['brand_

我正在从数据库中打印一个ID,以便创建一个带有该ID的SQL语句内部联接。因此,问题是“用户”可以从调试工具中更改它,从而轻松“破解”站点

请查看:

<select name="brand">
    <?php 
    # Print brands names
    for ($i=0; $i < count($brandsql); $i++) { 
        print '<option value="' . $brandsql[$i]['brand_id'] . '">' . $brandsql[$i]['brand_name'] . '</option>';
    }
    ?>
</select>

有更好的办法吗?

简单的回答:你不能

您所描述的被称为
SQL注入
,这是一种通过注入开发人员从未想过的SQL来“破解”网站的方法。这可能会导致可怕的情况,如删除数据库或访问管理员帐户

为了防止出现这种情况,您唯一的可能是使用PHP清理输入,例如使用
filter\u var()


即使你的情况没有那么糟糕,我还是建议你采取安全措施。永远不要相信用户的输入。它是邪恶的。

在表单中打印ID总是一种风险。防止用户篡改的唯一方法是在服务器端添加某种验证

如果您有在服务器端存储这些数据的方法,那么您需要这样做。可能是将它链接到会话id或类似的东西


如其他答案中所述,确保您确实有一个字段直接进入SQL,从而阻止SQL注入。

您发送给用户的任何内容都完全掌握在用户手中,您无法阻止他更改值,即使您无法阻止浏览器中使用javascript的键f12、ctrl+u等按钮,浏览器不允许这样做。

也遇到同样的问题。然而,这是一个简单的解决方案。当您给出应该包含DB ID的用户表单时,将该ID放入$\u会话[edit\u ID]。他不能摆弄那件事。在处理给定的表单之后,您只需取消设置($\会话[edit\u id])。这样一来,就不需要形式上的价值,只需要对代码进行更多的管理,但消除这种安全风险是完全值得的。

我真的无法确切理解您在描述问题时所说的话,或者“破解网站”是什么意思但基本上,您必须验证用户在服务器上的输入,并始终假定他们可以向您的服务器计算任何值


因此,如果您的问题是您只希望用户打印具有特定“id”的记录,那么您必须识别该用户(通常使用用户名/密码,但对于简单的表单,您可以只使用密码或pin码等),并将允许用户打印的id存储在您的服务器上。然后检查提交的id是否允许该用户使用

知道ID不会让用户破解网站。糟糕的服务器安全性会让用户破解网站。用户总是可以“破解”网站——这只是时间问题。永远不要期望用户提供有效数据。我认为在HTML中显示ID没有问题(可以使用jQuery,并且可以从浏览器访问它)。会话变量保留在服务器端,不易处理。将id存储在会话变量中,并在以后使用它。你不能。您根本无法信任来自客户端站点的任何内容。验证所有的东西!
$('#brand').change(function(e){
    $.getJSON("q.php", {type: 1, brand: this.value})
    .done(function(e){
        // I print the results to the user.
    });
});
$input = filter_var($_POST['brand']);