题图:by from gary bunt
昨晚看见群里在讨论关于数据库安全以及关于 SQL 注入的问题,那就简单的说一下。
————
首先 SQL 注入是指有些不法分子或者黑客利用一些代码中的 SQL 漏洞来进行攻击,进取数据库进行篡改一些数据或者删除一些表中的业务重要数据,更有甚者直接把表和库直接删除。。
————
防止 SQL 注入,而黑客一般利用两种途径去进行攻击,一种是动态 SQL。比如系统中的用户登录认证:sring sql =“select * from t_user where username =‘ “username” ’+‘ “password” '。黑客经常用到的手段就是1=1--,直接达到免密登录,进去数据库进行为所欲为的 update、delete、甚至drop table、drop database等。
条件后面username=”or 1=1 用户名等于 ” 或1=1 那么这个条件一定会成功;然后后面加两个-,这意味着注释,它将后面的语句注释,让他们不起作用,这样语句永远都能正确执行,用户轻易骗过系统,获取合法身份。
如果在来点劲爆的,执行DROP DATABASE (DB Name) --' and password=''那后果就可能惨了,要比比特币勒索还要痛苦。
另外一种就是通过存储过程来进行攻击。找到存储过程当中的一些特殊的 SQL以及一些特殊符号,去转义符、分号、--符号等。
—————
这个时候就涉及到了数据库安全,如何保证并且有效防范数据库被别人攻击呢?
数据库安全包含两层:第一层是指系统运行安全,系统运行安全通常受到的威胁如下,一些网络不法分子通过网络,局域网等途径通过入侵电脑使系统无法正常启动,或超负荷让机子运行大量算法,并关闭cpu风扇,使cpu过热烧坏等破坏性活动; 第二层是指系统信息安全,系统安全通常受到的威胁如下,黑客对数据库入侵,并盗取想要的资料。数据库系统的安全特性主要是针对数据而言的,包括数据独立性、数据安全性、数据完整性、并发控制、故障恢复等几个方面。
1、数据库尽量不要裸奔在公网上。
一般数据库服务器,也就是装数据库的机器尽量不要装在公网机器上。公网机器很可能被SQL注入。危险性非常大。退一步讲,就算装在了公网机器上,也要进行防火墙设置,比如开白名单、入出站规则设置。去年的勒索病毒就是最好的案例。
2、应用系统配置文件加密
比如,一般的应用系统都会有配置文件webconfig,一般里面会涉及到链接数据库的字符串,如ip、端口、数据库名称、用户名、密码建议都进行加密。一般采用md5或base64去进行加密,但是这种方法太低级了。需要去用更难破解的手段去加密。其他行业我不太清楚、在医疗行业医院在三级等保时,配置文件各个应用系统配置文件必须要求是加密的。
3、操作系统层面的漏洞
操作系统也是有漏洞的,这个时候就必须要去打补丁,很重要。吃碗泡面,没调料我估计也好吃不到哪里去。
4、数据库的用户名和密码复杂程度
用root或者administrator密码123或者123456的这种都是在作死。
5、还要防止那种删库跑路的
一个rm-rf/*或者回收站就彻底凉凉了。『从删库到跑路』这本书在某宝上已经卖的很火了。开个玩笑,删库获刑的不少了,千万不可冲动。
我说:与其温水煮青蛙,不如跳出重围搏一把 。高哥织梦圈 不只有 it 、更有职场、段子、技术、写作、创业等。欢迎志同道合的朋友们。
ps:
吃水不忘挖井人,懂的人自然懂
往期文章:
懂业务的技术人!
干起来。