搜索
系统检测到您的用户名不符合规范:

网站安全之数据库安全

浏览:498 发布日期:2019年03月11日 分类:求助交流 关键字: 数据双锁,数据库安全,sql注入
数据库安全关系到网站整体安全
今天看到说index主页被篡改成了木马网站什么的,所以我就想怎样去预防呢?
我来说说我的想法,不对的请指正,有遗留的请补充,大家学习嘛.
1.$data=input('');$sql=".....$data"; Db::execute($sql);
这是一条我经常写的按照用户数据,自动更新数据库字段的语句,他的好处是简单,代码少.坏处是,对于恶意提交的sql注入式攻击,防不胜防!
解决的方法是:对input回来的数据进行(关键字替换+字符串加密处理).替换指的是,吧$data中关键字如:select join update delete 等等替换成"赛冷特 脚印 阿不得 地里特"等等中文字符,然后再进行数据加密处理,加密算法有很多,比如最简单的循环位移法,把字符串中的每个字符按照用户密码md5后的字符串的某个字符的asc码值先循环左位移码值次数,然后每一个$data中的字符串依次循环左移,直到用户输入的$data中最后一个字符被加密,得到一个密文$codata,保存密文到数据库字段中,这样才安全.取出来就可以按照密码右位移相应次数即可.
2.index.php被攻击篡改,一般有两种方式,一种是post或是get或是ajax提交,三种提交方式本质上是一样的东西,只是手段不同,相同的是都是通过文件头来保存传送数据.post可以用专用软件来生成无数个可能的数据来post到你的提交页面,如果你的代码没有漏洞,对用户输入的数据进行了限长,转码,加密三重操作后,攻击的可能性就很低.
3.upload 文件上传
上传的文件及时你限制了文件扩展名,比如文本/图片等等,但是你不知道里面的文本中是否有可执行的脚本,比如js,比如java等等,当然单单能上传隐藏脚本的文件到你的upload目录也无法执行,还是要配合post传过来的漏洞.
解决的方法是,上传的文件一律都是转码/加密处理然后存放在二进制文件中,当你需要取出来,在做解密处理,然后按照原样字符串输出.
4.数据双锁
数据库数据要做好两种准备,一,全部数据库被盗窃备份,但是小偷无法直接读取数据原文,这样即使被盗也没有价值.二,读取与写入不在一个服务器上,如果是小应用,读写不在一个表上操作,如果再更小的应用,读写不在一个字段上操作.比如说存款余额,a字段是加密过的余额数据(ac669538ttdddll),b字段是a字段加密前的明文的md5值,c字段是明文(2003.45元)
当用户取款,a字段首先用用户密码做a字段的解密(加密算法左循环移位的逆操作右循环移位)然后做md5,看是不是b字段的值,如果不是,更新余额操作不执行,如果正确更新操作.c字段的左右是用来统计,查看余额,等等危险系数较低的操作的,二a,b字段是用来验证写入操作的.这就是数据双锁.
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
czlife
积分:522 等级:LV2
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /