数据库相关问题

#1 278086346

我写了一个订单系统,客户前台下单,后台可以显示订单,做了MD5加密,后台不显示管理员密码,做了日志,登陆和操作都有记录,但是现在有一个这样的问题,就是别人不登陆帐号可以删除订单,就是可以删除数据库的资料,日志里面有记录。但是实际是必须登陆管理员帐号才能进行操作的。
我检查了SQL注入,好像也没有问题,请问这个有可能是什么原因呢?

2013-03-14 10:47:25

#2 coolhpy

看手册,,权限控制那一章
http://www.speedphp.com/thread-3735-1-1.html

2013-03-14 11:01:39

#3 278086346

coolhpy 发表于 2013-3-14 11:01
看手册,,权限控制那一章
http://www.speedphp.com/thread-3735-1-1.html
这些都是没有错的,我是按这个来做的,有权限控制的

2013-03-14 11:17:45

#4 coolhpy

你用的是“强制控制”还是“有限控制”??

如果确实按照手册来是不可能有错的。。

你可以查下看acl表里面有没有把用于删除订单的action的记录加进去。

2013-03-14 11:30:25

#5 278086346

coolhpy 发表于 2013-3-14 11:30
你用的是“强制控制”还是“有限控制”??

如果确实按照手册来是不可能有错的。。
强制的,删除的操作也加入了日志,而且是可以显示出来的。
现在是没有错的,只是有一个现象就是:别人在不知道我管理员帐号密码的前提下,可以删除我的订单,而且日志有记录的,订单已经被删除

2013-03-14 11:39:20

#6 jake

这里的“前提”不成立,

如果“别人”是你知道的人,那么怎么被删可以去研究这人做过什么就行。

如果“别人”是你完全不知道的人,那么为什么会有说“别人在不知道我管理员帐号密码的前提”呢?你能知道一个你完全不知道的人知道的东西吗?

另外,既然有操作日志,那么证明“别人”不是通过什么系统漏洞之类的进入操作,而是通过管理员帐号,和普通管理员一样进行删除操作的。因为如果是通过系统漏洞什么的,根本不会留下这种日志。

登录没留下记录,但是删除留下记录,那么极有可能:是普通用户,在某种逻辑问题下,转变成管理员帐号。

比如说XSS攻击就可以做到这点。

2013-03-14 12:30:50

#7 278086346

jake 发表于 2013-3-14 12:30
这里的“前提”不成立,

如果“别人”是你知道的人,那么怎么被删可以去研究这人做过什么就行。
我现在只有一个管理员,没有普通用户,而且管理员的上一次IP和本次登陆IP都有记录,每次都是显示在我这的IP登陆。而且登录时候密码错误什么的都会写在日志里面,也不存在暴力破解,这样我才猜测不是通过帐号登陆。
我是这样想的:日志操作不是可以存放在服务器上面吗?而且是.log的文本文档,是可以手动删除里面某条记录的,“别人“是不是通过FTP删除文档里面的他登录的记录呢?可是我关闭了FTP,依然存在问题。

QQ截图20130314131427.jpg
请教JAKE,这个日志是否可以记录删除订单的帐号名和当时登陆帐号的IP呢?

我去看看这个跨站攻击是怎么回事

2013-03-14 13:17:03

#8 jake

按道理你的程序不会写出删log记录的代码,加上关闭FTP,那么应该是手动删除某条记录的情况,要不就整个log全删了。

按照你描述的,这里能想到的只有跨站攻击。

2013-03-14 13:34:27

#9 coolhpy

你在没有用管理员登录的情况下,在浏览器中输入直接输入删除订单的链接地址,看看会提示什么。

类似这样的地址:http://localhost/index.php?c=order&a=del&id=1
order:你对应的订单controller
del:对应的删除action
id:对应的订单ID或者其他参数

2013-03-14 13:36:42

#10 coolhpy

我始终觉得是你的权限设置上有问题。

另外,你把管理员账号名一并写到日志里看下吧

2013-03-14 13:41:16

#11 278086346

jake 发表于 2013-3-14 13:34
按道理你的程序不会写出删log记录的代码,加上关闭FTP,那么应该是手动删除某条记录的情况,要不就整个log ...
写了一次清空日志的代码,没有写一条一条删除,我在看看是否是跨站攻击的问题,谢谢JAKE

2013-03-14 15:41:54

#12 278086346

coolhpy 发表于 2013-3-14 13:36
你在没有用管理员登录的情况下,在浏览器中输入直接输入删除订单的链接地址,看看会提示什么。

类似这样的 ...
提示没有权限,我把这个控制器写在ACL表了...我在试试把用户名也写进日志试试,谢谢@coolhpy{:soso_e183:}

2013-03-14 15:42:52