你如何保护html值

时间:2015-05-26 06:02:41

标签: javascript php html json

我按顺序打印数据库中的ID,以创建具有该ID的SQL语句INNER JOIN。所以,问题在于"用户"可以从调试工具中更改它,轻松“解决”问题。网站。

检查出来:

<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>

所以...我的问题是:有没有办法在不将HTML打印到HTML的情况下执行此操作?请注意,我使用JavaScript获取ID值:

$('#brand').change(function(e){
    $.getJSON("q.php", {type: 1, brand: this.value})
    .done(function(e){
        // I print the results to the user.
    });
});

存在更好的方法吗?

5 个答案:

答案 0 :(得分:2)

简单回答:你不能。

您所描述的内容称为SQL Injection,一种&#34;破解&#34;通过注入开发人员从未想过的SQL的网站。这可能会导致诸如删除数据库或访问管理员帐户等可怕情况。

为了防止这种情况,您唯一的可能性是使用PHP清理输入,例如使用filter_var()

$input = filter_var($_POST['brand']);

尽管情况并非如此糟糕,但我建议您实施安全措施。绝不相信用户输入。这是邪恶的。

答案 1 :(得分:1)

遇到同样的问题。简单的解决方案。当您提供应包含来自DB的ID的用户表单时,请将该ID放在$ _SESSION [edit_id]中。他无法摆弄那个。在您处理给定的表单之后,您只需要取消设置($ _ SESSION [edit_id])。这种形式不需要价值,它只会为你的代码增加更多的管理,但它对于消除这种安全风险是完全有价值的。

答案 2 :(得分:1)

当你描述你的问题或你的意思时,我无法确切地理解你所说的是什么?#34;破解网站&#34;但基本上你必须验证服务器上的用户输入,并始终假设他们可以将任何值汇总到你的服务器。

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

答案 3 :(得分:0)

在表单中打印ID始终存在风险。防止用户摆弄的唯一方法是在服务器端添加某种验证。

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

正如其他答案所述,请确保您确实有一个字段直接进入SQL,以防止SQL注入。

答案 4 :(得分:0)

你发送给用户的东西完全在他手中,你不能阻止他改变数值,即使你不能阻止使用javascript浏览器中的键f12,ctrl + u等按钮,也不允许浏览器。