我可以混淆PHP函数调用吗?

时间:2015-09-11 13:03:25

标签: javascript php

我有一个像这样的JavaScript函数:

function delPhoto(thisPhotoID) {
  $("#php").load("delphoto.php?id=" + thisPhotoID);
}

此PHP函数从MySQL数据库中删除相应的照片,但是查看该网页源的任何人都可能恶意地使用任意数字调用delphoto.php脚本并从数据库中删除随机照片。

有没有办法可以对这个函数调用进行模糊处理,以便无法完成,或者PHP函数是否有办法拒绝从网页外部对它进行的调用?

3 个答案:

答案 0 :(得分:1)

我想知道我是否可以实现某种校验和,以便delphoto.php知道这是一个有效的调用,

例如:

delphoto.php?id=13&checksum=A4F8W9

其中13等于A4F8W9且没有正确的校验和,它不是一个有效的呼叫?因此,如果有人想要删除图像#14,他们需要弄清楚如何计算正确的校验和。

答案 1 :(得分:1)

安全问题1:
永远不要以这种方式暴露你的后端:建立一个控制器; 前端必须只与控制器通信,因此所有PHP脚本都将为用户隐藏

安全问题2:
使用令牌系统进行此类操作

1-生成一个随机数,例如:使用@,将其存储在列表或关联数组(用户,令牌)中,并将其推送到MemcachedANYEM或{{3数据服务器
2-生成链接:

{{}}

3-执行方法 DELETE 时,验证收到的uniqid(),如果允许操作,则从数据服务器中删除存储的令牌(必须只使用一次)

答案 2 :(得分:0)

  

然而,任何查看网页来源的人都可以恶意地使用任意数字调用delphoto.php脚本,并从数据库中删除随机照片。

如果我想要搞砸你的网站,或者即使我只是好奇并且四处寻找,那么为你的照片提供数字ID是一个很好的起点。特别是像“delphoto”这样的东西。如果我想在你的服务器上放置负载以及一般的混乱,我会设置一个脚本来平行每一个ID。这不仅会导致用户因数据丢失而产生巨大的麻烦,而且取决于此调用是否从磁盘中删除照片,它也可能占用服务器资源。

  

有没有办法可以混淆这个函数调用,这样就无法完成,或者PHP函数是否有办法拒绝从网页外部调用它?

你有足够的意识去理解你目前所拥有的东西是不安全的。但混淆不能取代实际的安全性。 网站上的任何管理功能都应由用户系统和角色管理方案保护。对于谁可以在网站上做什么,用户和管理员之间应该有明显的区别。

我不知道您是否正在使用框架,但显然我们无法告诉您如何保护端点,而不会看到有关您的用户系统如何工作的任何代码。但是如果你有一个,你需要查看文档并确定如何检查用户是否:

  1. 已登录
  2. 有权执行操作
  3. 根据系统的功能,可能需要更改。例如,管理员应该能够删除任何内容。但用户应该只能删除自己的照片。因此,“执行操作的权限”的一部分将进行所有权检查。