2

我对服务器端编码相当陌生,目前正在建立一个站点,该站点涉及从数据库中提取对象,允许用户编辑它们,然后将这些元素重新插入到数据库中。

但是,我不确定如何防止用户通过使用开发工具破坏数据库。

本质上,元素显示在列表中,每个元素都是一个脚本。它有自己的唯一 ID 和名称(不一定是唯一的)。因此,当从数据库中提取它时,名称是列表的文本,而 id 包含在属性字段中。当它们被编辑时,我从 html 属性中提取 id 并使用它来保存对数据库的任何更改。

当然,我会检查服务器端以确定是否允许用户进行的所有编辑。

但是,我遇到的问题是用户可以轻松地打开任何形式的开发人员工具,更改脚本 ID(切换它们或以任何他们喜欢的方式改变它们),这肯定会损害数据库。

有人可以提供一些技术来防止这个问题吗?我真的很感激。谢谢!

我不知道它会有什么帮助,但我的大部分代码都在 Javascript(使用 jquery 和 jquery ui)和 php(使用 CodeIgniter 作为框架)中。

编辑:

想象两个元素

ID -> 标题 -> 描述

5 -> 你好 -> 世界

6 -> 再见 -> 睡觉

在服务器端,这些显示为列表,并且有另一种编辑值的方法。

<li data-id=5>Hello</li>
<li data-id=6>Bye</li>

有人可以加载火虫并更改我用于查询的数据ID,例如将第一个设为7。或者两者都交换。在这种情况下,这并不重要,但实际上更多的是出于我的好奇心,有什么办法可以防止这种情况发生吗?

4

1 回答 1

0

使用 mysql_real_escape_string 向数据库发送安全查询:

    $user_input = mysql_real_escape_string($_POST['user_input']);
于 2012-07-16T15:30:22.603 回答