服务器端验证防止数据库错误


Server Side Validation Preventing Database Errors

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

然而,我不知道如何防止用户通过使用开发工具破坏数据库。

基本上,元素显示在列表中,每个元素都是一个脚本。它有自己唯一的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>

有人可以加载firebug并更改我用于查询的数据id,比如让第一个id为7。或者两者互换。在这种情况下,这并不重要,但实际上更多的是出于我的好奇心,有什么方法可以防止这种情况发生吗?

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

    $user_input = mysql_real_escape_string($_POST['user_input']);