前言:
虽然近些年SQL注入已经被各类的安全开发框架规避了绝大部分,但SQL注入作为一种最原始的攻击手段之一,破坏力仍然十分强大,因为它直捣黄龙数据中心。所以未雨绸缪,各位不可不重视。
预防SQL注入方法措施:
-
服务器层面:
1:购买云服务商的Waf防火墙,WAF会在服务器外部规避识别并过滤掉SQL攻击,并且可以永久封掉对方的IP。
2: 请专业的网络安全公司或购买他们的付费产品来护航。如国内排名前列的奇安信,深信服,新华三,亚信安全,腾讯安全,阿里安全等。往往用魔法打败魔法是最有效的,因为懂得防御的人一定懂得如何攻击,懂攻击的人也势必知道如何防御。
2:要保证生产环境的WebShell是关闭错误信息的。例如,PHP生产环境中的配置php.ini中的display_error是off,这样就能关闭服务器的错误提示,不直接展示给攻击者。
3:做好Web服务的日志实时监控和记录,定期备份,防止攻击者攻入后抹掉相关日志信息。
4:时刻关注最新漏洞和病毒,定期更新维护服务器软件和安全漏洞补丁,做好防护。
5:数据库最小权限规则。确保用户具有执行必要操作的最低权限,这样即使发生SQL注入攻击,攻击者也无法进行危险的操作。
......
-
程序编码层面:
1:使用参数化和预编译语句。参数化和预编译语句可以防止SQL在执行的时候把用户输入的字符误解为SQL语法。比如以下的sql语句,
- PrepareStatement函数会将以下SQL语句进行预编译定型,生成固定的SQL数据结构。无论用户输入什么字符,都不会被解析成sql语法,也就是 -- , # ,or 1=1 等这些都会不起作用。从根本上杜绝SQL注入。
String sql = "select * from courseinfo where course_id = ?";
stat = connection.PrepareStatement(sql);
- 但在有些时候我们无法使用预编译语句,比如传入的sql参数为动态的时候,就必须要进行拼接。如以下情况:
- 这种就必须要指定传入参数的数据类型,最好用正则去过滤校验,像用图中的Map来传递就有很大的风险。
2: 前端同学在前端输入框要做好表单校验,过滤限制提交那些疑似是恶意的SQL代码。
3: 使用ORM自动化框架,如Mybatis,Hibernate,等。Hibernate中尽量调用 hibernate.find() 方法去发送查询。 Mybatis中传参时使用 #{} 来过滤,${} 符不会过滤,要合理使用。
4: 在后端添加Filter 过滤框架,利用正则表达式判断过滤掉那些危险字符。
5: 在进行JDBC操作时,一定要使用错误捕捉框架或try catch 把错误提示隐藏掉,避免直接显示到页面或反馈给用户,
.......
以上编码层面的防范主要是针对Java, 关于php, python的 ,有机会再补充。
-
如何最大限度规避网络攻击
一台接入互联网的个人PC机或服务器,其实本身就已经处在了网络攻击的范围内,只是个人PC没有被攻击的价值,所以我们个人可能感觉不到。但那些有价值的商务网站,聊天社交,金融交易,12306,淘宝,京东等和一些重要政务,军事,银行,国家电网,移动,电信,联通运营商等城域网、局域网都无时不刻的在遭受着未知的网络攻击。
规避网络攻击措施:
1:如果网站仅面对国内用户服务的,那就禁止外网IP访问。(因为据调查,90%的网络攻击都来源于境外)。但如果是国际网站 .com等,那就需要做其他措施了,如购买高防服务,和一些安全产品。
- 能做到绝对安全几乎是不可能的,周鸿伟说过世界上没有攻不破的网络,只有不努力的黑客。
- 能做到最大限度安全就是花钱雇专业团队来做,但这对于小团队和公司来说不太实际,小公司能做的最好就是购买专业团队公司的安全产品和技术服务。雷军刚在演讲中说过,"遇到不会的问题那就找个会的问问,因为你经历的问题别人早就经历过了”
2:个人电脑的话谨慎点击不明来源的邮件,链接等。
3:安装安全软件杀毒软件,如360,腾讯管家,金山。其他都不建议安装,什么2345杀毒,火绒安全,都实在不值得一提。2345简直就是个病毒蛊,打开即爆发。火绒受到追捧的原因只是因为他现在没有广告,杀毒能力一般,文件粉碎解密和腾讯比太拉跨。
360虽然各项防御能力在国内名列前茅,但那只是对政企用户,他的个人版做的对个人用户越来越不友好,一旦安装一个将会是不经意间就全家桶奉上。这里强烈推荐腾讯管家的旧版,
腾讯管家在保护自己产品方面做的非常好,而且杀毒,尤其是文件粉碎,强力删除,文件解密和文件恢复方面 在同等免费产品中个人感觉是最好的。
现在新版阉割了很多工具箱里的功能,电脑诊所什么的都没了。所以这里强烈推荐大家使用旧版,只需定期更新病毒库和新版没有区别。
4:有能力的可以购买付费杀毒软件。会定期更新国际最新的病毒库信息。
5:定期升级系统,安装补丁程序。这里也不是说一发布就升级,而是要看有没有升级的必要,如果被标注是重要升级,那就需要升级。如果只是优化体验,可以选择升级。
.......
后续有新措施,会逐步补充.....
感谢大家的观看,祝工作顺利,生活愉快。