如何保护表示PHP中的内容的数据或行ID

时间:2016-09-09 15:53:11

标签: javascript php mysql ajax

在我的项目中,用户可以发帖(发布照片或某些文字)。从技术上讲,我在表格帖子中标识每个帖子的唯一ID,其中我存储了user_id(帖子的欠者),并且帖子的ID设置为自动增量。知道每个帖子的标识后,我获取帖子表中的所有行,并将这些帖子和相关详细信息(post_id,user_id,data等)放入HTML中。用户可以在该帖子上做更多事情,例如在帖子上讨论,评价帖子等等。

这些事情是通过ajax帖子完成的,因为我将post_id存储在HTML元素属性上,如( data-p = 52 )。有时我使用php base64_encode 函数来加密 post_id

在我的应用程序中,大多数事件都会对这些 post_id和user_id 执行操作,该事件存储在HTML自定义属性中。

现在我正在考虑安全问题,我的问题是:是否有正确的方法或方式我可以用Javascript或正确的方式保存这些信息我可以加密有关帖子的这些信息。

2 个答案:

答案 0 :(得分:4)

您正在考虑系统中可能存在的安全漏洞。但是,就目前而言,从我所知,你并不十分担心正确的事情。数据,如用户的ID,帖子的ID,本身不敏感。如果您查看社交网络的URL等,您很可能会看到用户ID信息等。您需要考虑的是,我如何确保它不重要数据是公开的?换句话说,如何防止攻击者使用此数据?因为它拥有的这些数据只是一堆数字。现在,如果这些ID在您的系统中实际上是敏感的原因,您应该考虑轻微的结构重新排列。

采用常见的(或更少这些天)SQL注入技术。攻击者将SQL代码输入到用户输入中,然后将该输入连接/替换为SQL查询,从而提供对数据库的不必要访问(请参阅此处http://www.w3schools.com/sql/sql_injection.asp)。攻击者知道帖子ID并不重要,这意味着哦不!他可以删除他想要的帖子,相反,重要的是他可以删除他想要的任何帖子。所以问题在于SQL漏洞,而不是ID的知道。并且,要修复SQL漏洞,您需要确保用户输入将禁止类似代码的字符。这被称为消毒。

当然,我并不是说您不应该关注用户可以使用的数据。但系统本身需要强大。

答案 1 :(得分:0)

您担心的情况(攻击者可以使用这些ID向您的系统发送请求以您不想要的方式操作数据)与您是否将ID公开给客户端无关

在某种程度上,您的客户端的请求需要由您的服务器处理。如果你有一个功能,帖子的作者可以删除他们自己的帖子,希望你验证删除请求,发起请求的用户实际上是该帖子的所有者,而不是只要有人要求你的系统盲目地删除数据。即使您引入了代理键以防止实际主键泄露给公众,用于删除帖子的任何路由端点仍然需要以强大的方式处理 数据数据的完整性。

正如我在评论中所说的那样,你唯一应该担心的是人们对你的身份证进行数学运算(例如正负1),以便了解他们是否可以对你的系统进行游戏并接收数据,这可能是他们不应该。但即使在那种情况下,无论什么端点响应请求都应在返回任何内容之前验证该请求。您可以通过以下方式完全防止这种情况:a)验证请求数据的用户实际拥有数据,b)通过 not 使用自动递增的整数作为主键,而不是依赖UUID作为主键。< / p>