8大措施帮你构筑Access安全防线
来源:低一度博客 发布时间:2010-03-11 14:38:00
今天下午,低一度博客受到攻击了,出现了大约一个小时的访问异常。庆幸的是,这帮无耻歹徒没能成功获取我的Access数据库,而只是象征性地给我注入了一些东西。也不知道他们是怎样注入的!想想的确不容小视这帮混蛋!不过没关系,低一度的数据库目前足够安全。利用这个“机会”,我们就来谈一谈这个问题。
大家都知道,Asp程序使用得最多的数据库类型就是Access,如PJ-Blog、Z-Blog等。这是因为Access数据库简单小巧,直接上传到服务器上就可以用了。尽管简便,然而Access也有不足之处,其中比较伤脑筋的便是其安全性问题。大部分黑客攻击此类Asp站点,就是从获取Access数据库开始的。所以,怎样有效防范Access数据库被恶意下载,成了建站中首当其冲的话题。这里,低一度结合自己的经验、实例及一些网上搜罗来的资料,向大家介绍几种相对有效的防范措施,希望对大家会有帮助(当然,用不着最好)。
防范措施一:将数据库文件名命名得尽可能地复杂
这是最最偷懒的方法了!所以,这个法子的安全指数也并非最高。若攻击者通过第三方途径获得了数据库的路径,你就玩完了。比如说我本来只能拿到list权,结果意外看到了你的数据库路径,那我便可冠冕堂皇地把数据库下载回去研究了。另外,数据文件通常大小都比较大,取再隐蔽的文件名也瞒不了人。呵呵,所以此法我并不提倡。
防范措施二:修改数据库名后缀为Asa或Asp等格式
这一做法,安全指数相对第一种行为会高一些,但同样存在着隐患。它必须配合一些必要的设置进行,如:在数据库文件中加入<%或%>标签,这样,IIS才会按Asp语法来解析,然后报告500错误,使歹徒无法下载。可是,假如只是简单地在数据库的文本或备注字段中加入<%是起不到作用的,因为Access会对其中的内容进行处理,在数据库里它会以< %的形式存在,无效哦!正确的方法应该是将<%存入OLE对象字段里,这样我们的防范目的才能达到。
操作方法如下: 先用notepad新建一个内容为“<%”的文本文件,然后随便取个名字存档。接着,用Access打开你的数据库文件,新建一个表,随便取个什么名字,然后在表中添加一个OLE对象的字段,并添加一条记录,插入之前建立的文本文件,要是操作正确,便可以看到一个新的名为“数据包”的记录。可以了!
防范措施三:在数据库名称前加上“#”等特殊符号
在数据库文件名之前加上“#”等特殊符号、然后修改数据库连接文件(如c_custom.asp)中的数据库地址,也可以起到不错的保护作用。原理是:当歹徒下载的时候,浏览器或下载工具将只能识别“#”符号前的部分地址,而对于“#”后面的名将自动去除。举个例子,假设你要下载:http://www.diyidu.cn/date/#123.mdb(如果存在的话),当你输入该地址回车,此时无论是Ie还是Flashget等,下载到的将都是http://www.diyidu.cn/date/index.htm(index.asp、default.jsp等你在IIS设置的首页文档)。
另外,在数据库文件名中保留一些空格也能起到类似作用,由于Http协议对地址解析的非凡性,空格会被编译为“%”,比如你要下载:http://www.diyidu.cn/date/123 456.mdb(123与456之间是个空格),当你输入该地址回车,此时你下载到的将是http://www.diyidu.cn/date/123%456.mdb。而我们的目录中,根本就没有123%456.mdb这个文件,所以下载也是无效的。经过这样的修改以后,即使你暴露了数据库地址,一般情况下别人也无法下载得到。所以,这项措施的安全指数较之前两法,有更高了一筹。
防范措施四:为你的Access数据库加密
选取“工具-》安全-》加密/解密数据库,选取数据库(如:ABC.mdb)”,然后按确定,接着会出现“数据库加密后另存为”的窗口,另存为:ABC1.mdb,接着原数据库ABC.mdb就会被编码,然后另存为ABC1.mdb。注意,以上动作并不是对数据库设置密码,而是对数据库文件加以编码,目的是为了防止他人使用查看工具来查阅数据库文件中的内容。接下来的操作是:首先打开经过编码了的ABC1.mdb,在打开时,选择“独占”方式。然后选取功能表中的“工具-》安全-》设置数据库密码”, 接着输入密码即可。这样即使他人得到了ABC1.mdb文件,没有密码也是无法看到ABC1.mdb的。最后,记得加密完要同步修改数据库连接文件哦!
一点小说明:由于Access数据库的加密机制相对简单,即使设置了密码,解密也很轻易。只要数据库被下载了,其信息安全依然是个未知数。所以,此法也不是最佳。
猜你喜欢
- PHP xpath() 函数定义和用法xpath()函数运行对 XML 文档的 XPath 查询。如果成功,该函数返回 SimpleXMLE
- golang判断元素是否在数组内众所周知,golang里没有像python的in来判断元素是否在list里存在,可替代的办法是将list放到
- 本文实例为大家分享了pygame实现非图片按钮效果的具体代码,供大家参考,具体内容如下按钮类程序# -*- coding=utf-8 -*-
- 背景最近正在学nodejs,想到曾经有台云服务器,但是很久不用了,由于怕麻烦,一股脑的把云主机重装了个Ubuntu系统,于是配置MySQL成
- 本文通过Python3+PyQt5实现《python Qt Gui 快速编程》这本书的page Designer应用程序,采用QGraphi
- 开发测试的时候,经常需要填写姓名、手机号、身份证号、银行卡号,既要符合格式要求、又不能重复。大家会到网上搜各种生成器。下面小编自己写的一个j
- 最近写了一个VUE的web app项目,需要实现某个部位吸顶的效果。即,页面往上滑动,刚好到达该部位时,该部分,固定在顶部显示。1、监听滚动
- 数据库中最好插入Null值。在python中,暂时没找到通过sql语句的方式插入Null值。推荐使用轮子的方法def insert_samp
- 什么情况下用响应缓冲会提高运行速度?例1、脚本引擎与 HTML 之间的切换频繁,对响应流写操作太多,导致性能下降:<table>
- 效果如下,dialog中内容自行添加<template> <div> <div class="dia
- 可能很多人遇到过这个错误,当使用setup.py安装python2.7图像处理模块PIL时,python默认会寻找电脑上以安装的vs2008
- 1。formpanel数据源和grid相同,使用 Form.getForm().loadRecord(row);则数据便可自动加载在form
- 1.定义在某些情况下,一个类的对象是有限且固定的,比如季节类,它只有 4 个对象;再比如行星类,目前只有 8 个对象。这种实例有限且固定的类
- 这个收藏本站、设为首页代码相信每个网站都会用到,这么常用的代码,网络上流行的一般是很多年前的代码版本,只有兼容IE,对其它浏览器没有考虑,下
- 根据用户的权限,展示不同的菜单页。知识点路由守卫(使用了前置守卫):根据用户角色判断要添加的路由vuex:保存动态添加的路由难点每次路由发生
- 一、介绍Django特点:具有完整的封装,开发者可以高效率的开发项目,Django将大部分的功能进行了封装,开发者只需要调用即可,如此,大大
- 本文实例讲述了Python基于更相减损术实现求解最大公约数的方法。分享给大家供大家参考,具体如下:先从网上摘录一段算法的描述如下:更相减损法
- mysql允许在相同列上创建多个索引,无论是有意还是无意,mysql需要单独维护重复的索引,并且优化器在优化查询的时候也需要逐个地进行考虑,
- 介绍海象运算符,即 := ,在 PEP 572 中被提出,并在 Python3.8 版本中发布。海象运算符的英文原名叫Assignment
- 本文介绍了网页运行代码框(runCode), 复制代码框(copyCode), 保存代码框(saveCode),的实现方法。javascri