怎样防止程序员恶意删除数据库?

怎样防止程序员恶意删除数据库?,第1张

你好!

这个一般一天备份一次就好了啊

即便是删除了,通过归档日志能恢复的。

其实,你们应该控制好权限。

可以给他们用的用户没有删除数据库权限不就好了?

祝你好运

1. 事实上,交易不帮你在这里多...除非你想有运行在多个HTTP请求(你很可能不希望)的交易。 有什么用在这些情况下是“乐观锁定”。 Django的ORM不支持,据我所知。但一直以来关于添加此功能。 那么,你是你自己的。基本上,你应该做的就是添加一个“版本”字段,你的模型,并把它传递给一个隐藏字段。正常周期的更新是: 读取数据并显示给 用户可以修改数据 用户发布的数据 该应用程序将其保存回数据库。 乐观锁,当你保存数据,你检查,如果你得到了从后面的版本是作为一个在数据库中,然后更新数据库和版本。如果它们不是,那有一直以来被加载的数据的变化。 你可以做到这一点与像一个单一的SQL调用:UPDATE ... WHERE version = 'version_from_user'

这个调用将更新数据库只有在版本仍然是

2. 我就是这样做的Django的乐观锁:updated = Entry.objects.filter(Q(id=e.id) &&Q(version=e.version))\

.update(updated_field=new_value, version=e.version+1)

if not updated:

raise ConcurrentModificationException()

上面列出的代码可以在自定义管理。 我提出以下假设: 筛选()。update()方法会导致在一个单一的数据库查询过滤器是懒惰 数据库查询是原子 这些假设都足以确保没有其他人之前已经更新了条目。如果有多个行被更新这样你的交易。 警告Django的文件: 请注意,update()方法是 直接转换为SQL 这是一个批量 *** 作 直接更新。它不运行任何 保存(您的模型)的方法,或发出 该pre_save或post_save信号

3. 这个问题是有点老了,我的回答有点晚,但经过我的理解使用这个已被固定在Django 1.4:select_for_update(nowait=True)

看到文档 返回一个QuerySet,将锁定行,直到事务结束,产生一个SELECT ...有关支持的数据库UPDATE的SQL。 通常情况下,如果另一个事务已获得所选择的行上的锁,则查询将阻塞,直到锁被释放。如果这不是你想要的行为,请致电select_for_update(NOWAIT=TRUE)。这将使调用非阻塞的。如果已经获取了冲突的锁被另一个事务时的QuerySet进行评估,DatabaseError的将得到提升。 当然,这只会工作,如果后端支持的“选择更新”功能,这对于例如SQLite不。不幸的是:nowait=True不支持MySql的,有你有nowait=False,这只会阻塞,直到锁被释放。

4. 对于未来的参考,退房离开的时候(在浏览器中,例如崩溃)的页面,并锁定它锁定的方式,不留下永恒的锁,通过javascript的解锁的混合物。下

5. 你应该Django的交易中间件,至少,甚至不管这个问题。 至于你实际有编辑数据的问题...是的,使用锁。或: 检查什么版本正在更新对(这样做牢固,不能简单地破解系统说,他们正在更新的最新副本!),且仅当该版本是最新的更新。否则,返回一个新页面与原来的版本,他们编辑,他们提交的版本,和别人写的新版本(S)。问他们变成一体,完全取决于最新的版本。你可以尝试类似的diff +补丁工具集,但你需要有方法工作失败的案例,无论如何,所以开始了。此外,您将需要保存的版本历史记录,并允许管理员恢复的变化,在无意的情况下或向上,但你应该有反正。 有很可能是Django应用程序/库,做这个最适合你。

6. 为了安全起见,数据库需要支持事务。 如果字段是“自由形式”如文字等等,你需要允许可以编辑的字段(你不能有所有权的数据),你可以存储在变量中的原始数据。 当committs,检查输入数据从原始数据更改(如果不是,你不需要通过重写旧数据打扰DB) 如果原来在数据库中的当前数据是可以保存,如果它改变了你可以示区别,并问该怎么办。 如果字段是一个数字如账户余额,在商店等项目的数量,你可以自动处理它,如果你计算出原始值(存储开始时填写表单)和新的价值,你就可以开始一个事务读取当前值之间的差额新增的差别,然后结束交易。如果你不能有负值,则应该中止交易,如果结果为负,并告诉 我不知道Django的,所以我不能给你德cod3s .. )

7. 另一个需要注意的是这个词“原子”.a个原子,你的数据库的更改要么发生或无法快速搜索说明这个问题问Django中的原子 *** 作。

8. 上面的想法updated = Entry.objects.filter(Q(id=e.id) &&Q(version=e.version))\

.update(updated_field=new_value, version=e.version+1)

if not updated:

raise ConcurrentModificationException()

看起来不错,应该能正常运行,即使没有序列化的交易。 问题是如何将deafult。保存()的行为,以不必须做人工管道来调用。update()方法。 我看着自定义管理想法。 我的计划是覆盖被称为Model.save_base()来执行更新的经理。 这是在Django 1.3当前代码def _update(self, values, **kwargs):

return self.get_query_set()._update(values, **kwargs)

什么需要恕我直言做的是这样的:def _update(self, values, **kwargs):

#TODO Get version field value

v = self.get_version_field_value(values[0])

return self.get_query_set().filter(Q(version=v))._update(values, **kwargs)

类似的事情需要发生的删除。但是删除是有点难度的Django是相当巫术在这方面通过django.db.models.deletion.Collector。 这是奇怪的,像Django的modren工具缺乏对Optimictic Concurency控制指导。 当我解开这个谜,我会更新这个帖子。希望解决方案将是不涉及万吨编码,怪异的意见,跳绳重要部分的Django等的一个很好的Python的方式

9. 从这里开始: 我假设将举行一个隐藏字段中你试图挽救细节的表格。def save(self):

if(self.id):

foo = Foo.objects.get(pk=self.id)

if(foo.timestamp >self.timestamp):

raise Exception, "trying to save outdated Foo"

super(Foo, self).save()

服务器安全这问题,很重要,之前服务器被黑,管理员账号也被篡改,远程端口也

登陆不了了。,在网上搜索了一些服务器安全设置以及防黑的文章,对着文章,我

一个一个的设置起来,费了好几天的时间才设置完,原以为会防止服务器再次被黑

,没想到服务器竟然瘫痪了,网站都打不开了,无奈对服务器安全也是一窍不通,

损失真的很大,数据库都损坏了,我哪个后悔啊。娘个咪的。最后还是让机房把系

统重装了。找了几个做网站服务器方面的朋友,咨询了关于服务器被黑的解决办法

,他们建议找国内最有名的服务器安全的安全公司来给做安全维护,找了sinesafe

,服务器被黑的问题,才得以解决。

一路的走来,才知道,服务器安全问题可不能小看了。经历了才知道,服务器安全

了给自己带来的也是长远的利益。 希望我的经历能帮到楼主,帮助别人也是在帮

助我自己。

下面是一些关于安全方面的建议!

建站一段时间后总能听得到什么什么网站被挂马,什么网站被黑。好像入侵挂马似

乎是件很简单的事情。其实,入侵不简单,简单的是你的网站的必要安全措施并未

做好。

一:挂马预防措施:

1、建议用户通过ftp来上传、维护网页,尽量不安装asp的上传程序。

2、定期对网站进行安全的检测,具体可以利用网上一些工具,如sinesafe网站挂

马检测工具!

序,只要可以上传文件的asp都要进行身份认证!

3、asp程序管理员的用户名和密码要有一定复杂性,不能过于简单,还要注意定期

更换。

4、到正规网站下载asp程序,下载后要对其数据库名称和存放路径进行修改,数据

库文件名称也要有一定复杂性。

5、要尽量保持程序是最新版本。

6、不要在网页上加注后台管理程序登陆页面的链接。

7、为防止程序有未知漏洞,可以在维护后删除后台管理程序的登陆页面,下次维

护时再通过ftp上传即可。

8、要时常备份数据库等重要文件。

9、日常要多维护,并注意空间中是否有来历不明的asp文件。记住:一分汗水,换

一分安全!

10、一旦发现被入侵,除非自己能识别出所有木马文件,否则要删除所有文件。

11、对asp上传程序的调用一定要进行身份认证,并只允许信任的人使用上传程序

。这其中包括各种新闻发布、商城及论坛程

二:挂马恢复措施:

1.修改帐号密码

不管是商业或不是,初始密码多半都是admin。因此你接到网站程序第一件事情就

是“修改帐号密码”。帐号

密码就不要在使用以前你习惯的,换点特别的。尽量将字母数字及符号一起。此外

密码最好超过15位。尚若你使用

SQL的话应该使用特别点的帐号密码,不要在使用什么什么admin之类,否则很容易

被入侵。

2.创建一个robots.txt

Robots能够有效的防范利用搜索引擎窃取信息的骇客。

3.修改后台文件

第一步:修改后台里的验证文件的名称。

第二步:修改conn.asp,防止非法下载,也可对数据库加密后在修改conn.asp。

第三步:修改ACESS数据库名称,越复杂越好,可以的话将数据所在目录的换一下

4.限制登陆后台IP

此方法是最有效的,每位虚拟主机用户应该都有个功能。你的IP不固定的话就麻烦

点每次改一下咯,安全第一嘛。

5.自定义404页面及自定义传送ASP错误信息

404能够让骇客批量查找你的后台一些重要文件及检查网页是否存在注入漏洞。

ASP错误嘛,可能会向不明来意者传送对方想要的信息。

6.慎重选择网站程序

注意一下网站程序是否本身存在漏洞,好坏你我心里该有把秤。

7.谨慎上传漏洞

据悉,上传漏洞往往是最简单也是最严重的,能够让黑客或骇客们轻松控制你的网

站。

可以禁止上传或着限制上传的文件类型。不懂的话可以找专业做网站安全的

sinesafe公司。

8. cookie 保护

登陆时尽量不要去访问其他站点,以防止 cookie 泄密。切记退出时要点退出在关

闭所有浏览器。

9.目录权限

请管理员设置好一些重要的目录权限,防止非正常的访问。如不要给上传目录执行

脚本权限及不要给非上传目录给于写入权。

10.自我测试

如今在网上黑客工具一箩筐,不防找一些来测试下你的网站是否OK。

11.例行维护

a.定期备份数据。最好每日备份一次,下载了备份文件后应该及时删除主机上的备

份文件。

b.定期更改数据库的名字及管理员帐密。

c.借WEB或FTP管理,查看所有目录体积,最后修改时间以及文件数,检查是文件是

否有异常,以及查看是否有异常的账号。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11406241.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存