【发布时间】:2015-05-26 06:02:41
【问题描述】:
我正在从数据库中打印一个 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>
所以...我的问题是:有没有办法在不将 ID 打印到 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.
});
});
有更好的方法吗?
【问题讨论】:
-
知道ID不会让用户破解网站。糟糕的服务器安全性会让用户破解网站。
-
用户总是可以“破解”网站,这只是时间问题。您永远不应期望用户提供有效数据。我认为您在 HTML 中显示 ID 没有问题(您使用 jQuery 进行操作,并且可以从浏览器访问)。
-
您可以使用 php 会话。会话变量留在服务器端,不容易被弄乱。将 id 存储在会话变量中,稍后再使用。 sessions
-
你不能。您根本无法信任来自客户端站点的任何内容。验证所有内容!
标签: javascript php html json