如何防止 SQL 注入?

简介:
5799cb6c1c79d73774c6a6f1a8ea8fb4294af2e4

题图:by from gary bunt

昨晚看见群里在讨论关于数据库安全以及关于 SQL 注入的问题,那就简单的说一下。

————

首先 SQL 注入是指有些不法分子或者黑客利用一些代码中的 SQL 漏洞来进行攻击,进取数据库进行篡改一些数据或者删除一些表中的业务重要数据,更有甚者直接把表和库直接删除。。

————

防止 SQL 注入,而黑客一般利用两种途径去进行攻击,一种是动态 SQL。比如系统中的用户登录认证:sring sql =“select * from t_user where username =‘ “username” ’+‘ “password” '。黑客经常用到的手段就是1=1--,直接达到免密登录,进去数据库进行为所欲为的 updatedelete、甚至drop tabledrop 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/*或者回收站就彻底凉凉了。『从删库到跑路』这本书在某宝上已经卖的很火了。开个玩笑,删库获刑的不少了,千万不可冲动。


原文发布时间为:2018-10-26
本文作者: 说点特别的
本文来自云栖社区合作伙伴“ 说点特别的”,了解相关信息可以关注“ 说点特别的”。

相关文章
|
1月前
|
SQL 监控 安全
SQL注入的实现原理以及防止
SQL注入的实现原理以及防止
|
2月前
|
SQL 数据库
20、绕过去除and、or、union select、空格的sql注入
20、绕过去除and、or、union select、空格的sql注入
30 0
|
29天前
|
SQL Java 应用服务中间件
Java项目防止SQL注入的四种方案
Java项目防止SQL注入的四种方案
33 0
|
1月前
|
SQL 安全 测试技术
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
15 0
|
1月前
|
SQL 安全 API
|
2月前
|
SQL JSON 数据库
常见的sql注入类型闭合及符号
常见的sql注入类型闭合及符号
31 0
|
2月前
|
SQL 数据库 数据安全/隐私保护
sql注入碰到加密数据怎么办
sql注入碰到加密数据怎么办
19 1
|
2月前
|
SQL 数据库
SQL注入基础(报错注入及延时注入)
SQL注入基础(报错注入及延时注入)
22 0
|
2月前
|
SQL
14、sql注入绕过技术
14、sql注入绕过技术
27 0
|
2月前
|
SQL
小课堂 -- sql注入绕过技术
小课堂 -- sql注入绕过技术
83 0