我有一个像这样的JavaScript函数:
function delPhoto(thisPhotoID) {
$("#php").load("delphoto.php?id=" + thisPhotoID);
}
此PHP函数从MySQL数据库中删除相应的照片,但是查看该网页源的任何人都可能恶意地使用任意数字调用delphoto.php脚本并从数据库中删除随机照片。
有没有办法可以对这个函数调用进行模糊处理,以便无法完成,或者PHP函数是否有办法拒绝从网页外部对它进行的调用?
答案 0 :(得分:1)
我想知道我是否可以实现某种校验和,以便delphoto.php
知道这是一个有效的调用,
例如:
delphoto.php?id=13&checksum=A4F8W9
其中13等于A4F8W9且没有正确的校验和,它不是一个有效的呼叫?因此,如果有人想要删除图像#14,他们需要弄清楚如何计算正确的校验和。
答案 1 :(得分:1)
安全问题1:
永远不要以这种方式暴露你的后端:建立一个控制器;
前端必须只与控制器通信,因此所有PHP脚本都将为用户隐藏
安全问题2:
使用令牌系统进行此类操作
1-生成一个随机数,例如:使用@
,将其存储在列表或关联数组(用户,令牌)中,并将其推送到Memcached,ANYEM或{{3数据服务器
2-生成链接:
{{}}
3-执行方法 DELETE 时,验证收到的uniqid()
,如果允许操作,则从数据服务器中删除存储的令牌(必须只使用一次)
答案 2 :(得分:0)
然而,任何查看网页来源的人都可以恶意地使用任意数字调用delphoto.php脚本,并从数据库中删除随机照片。
如果我想要搞砸你的网站,或者即使我只是好奇并且四处寻找,那么为你的照片提供数字ID是一个很好的起点。特别是像“delphoto”这样的东西。如果我想在你的服务器上放置负载以及一般的混乱,我会设置一个脚本来平行每一个ID。这不仅会导致用户因数据丢失而产生巨大的麻烦,而且取决于此调用是否从磁盘中删除照片,它也可能占用服务器资源。
有没有办法可以混淆这个函数调用,这样就无法完成,或者PHP函数是否有办法拒绝从网页外部调用它?
你有足够的意识去理解你目前所拥有的东西是不安全的。但混淆不能取代实际的安全性。 网站上的任何管理功能都应由用户系统和角色管理方案保护。对于谁可以在网站上做什么,用户和管理员之间应该有明显的区别。
我不知道您是否正在使用框架,但显然我们无法告诉您如何保护端点,而不会看到有关您的用户系统如何工作的任何代码。但是如果你有一个,你需要查看文档并确定如何检查用户是否:
根据系统的功能,可能需要更改。例如,管理员应该能够删除任何内容。但用户应该只能删除自己的照片。因此,“执行操作的权限”的一部分将进行所有权检查。