谈谈本汪(自称)个人认为作为Java开发者应该具备的网络安全意识

什么是网络安全呢?
简单了说,就是保障自部署网络程序能够按照既定的目的平稳运行,不受侵入,可是往复杂了说呢,web安全,DB安全,协议安全等等,每一块儿都包含了N多的细节。
本汪最开始了解到的,应给是sql注入,还是在学习初级Java开发案例的时候呢,连接数据库,不用Mybatis进行封装,直接编写jdbc代码,查询用户名和密码时,sql“select * from dept_user where username =@username”,此处的@username为前台用户名编辑框内的数据,如果不加任何防护(MD5加密等),当输入框内容为: (select username from dept_user where id =1),那么实际执行的sql为:select * from dept_user where username =(select username from dept_user where id =1);,仅以此为例,来说明简单的sql注入情形,这也是很多网站注册时,名字只能有数字,字母和下划线的原因之一;

再后来,本汪在玩手游的时候,发现了更多的代码注入,甚至是侵入系统跳过检查代码块的情况,比如球球大作战手游里名字颜色可变,这其实都是程序漏洞,其实已经破坏了游戏的平衡,不充钱就比别人炫酷:

案例一:球球大作战名字颜色可变
在这里插入图片描述


案例二:王者荣耀名字颜色可变(这个bug在17年年底时就修复了,图片难得,老玩家肯定还是见到过的),王者荣耀彩色名字代码,名字怎么变色,比如说红色是red,那么在取名的时候,在名字前面加上#R就可以了。(#R=红色,#B=蓝色,#P=粉色,#O=橙色,#G=绿色,#Y=黄色)下图钟无艳为#P,即粉色效果
在这里插入图片描述
而对于王者荣耀名字特别长,则不仅仅是代码注入那么简单了,众所周知,王者荣耀中的名字ID是有限制的,并不是所有ID都可以取,而且游戏的ID限制在6个字符,使用GG助手,侵入游戏后,效果:


案例三:王者荣耀名字超长,使用GG助手修改软件安装包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当然结果也很明显:
在这里插入图片描述
再到后来,了解的更多的,应该就是web安全中,常见的XSS攻击和CSRF了。XSS又叫CSS (Cross Site Script),跨站脚本攻击,说白了就是往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中的html代码会被执行。现在web端用户输入框非常多,也就加大了XSS攻击的概率,们能做得,也就是在开发中,注意坚守过滤输入和转义输出原则了,时刻记着,开发过程中每一次偷懒,都会给恶意攻击者以机会


案例四
自2019年9月25日发现以来,Facebook遭受了大规模垃圾邮件攻击,Facebook于11月15日表示,垃圾邮件攻击诱使毫无戒心的用户将恶意Javascript代码复制到其Web浏览器的URL栏中,以利用跨站点脚本漏洞。尚不清楚哪个浏览器具有该漏洞,但Facebook声称其工程师正在协调该漏洞,问题已基本控制住了。此次攻击的流程图如下:
在这里插入图片描述
很多时候,各种优惠吗,杂乱的连接都有可能引发XSS攻击,据Facebook博客宣布安全功能的消息,Facebook正在与主要的浏览器公司合作,以解决根本问题,并且微软已在Internet Explorer 9中实施了一些保护措施,目前Internet Explorer 已对此页面进行了修改,以帮助阻止跨站脚本,解决:禁用XSS 筛选器
IE浏览器——工具——internet选项——安全——自定义级别,找到XSS筛选器,选择禁用。然后全部确定或者应用即可。这样,凡是有广告嫌疑的,都会被禁止使用。


案例五
而对于CSRF(Cross-site request forgery)跨站请求伪造,这个简单点说,比如本汪想获取马云老板邮箱里的全部邮件,那么本汪向他邮箱里发一封邮件,里面加一张图或其他信息(本汪在这些信息下添加链接:https://mail.google.com/mail?ui = 2&fw = true&fwe = 1429922940@qq .com),这个链接的功能是Gmail设置邮件转发,1429922940@ qq.com为本汪自己的邮箱,当马云老板点击时,嘿嘿,那么本汪就拿到了马云老板全部的邮件,想想是这样吗?
在这里插入图片描述
其实XSS和XSRF都对用户有非常大的依赖,没有直接攻击那么方便快捷,然而效果往往比直接攻击更好,利用用户的好奇心,反而更容易攻击成功,危害也更加的客观。
而对于提供大量接口供用户使用的软件,每一个接口的调用,都应该设置(一个IP地址在某一个时间段内,只能访问4~5次,曾在一片博客中看到过,黑客破解验证后,使用多个IP频繁调用客户端的密码重置接口,导致服务器压力大,运行速度受限制的事。具体可以访问此链接https://blog.csdn.net/ityouknow/article/details/104666810。
等等,等等入侵事件,就是为什么互联网公司和传统软件公司都要强调网络安全的原因,公司的信誉,不能丢。

作为Java开发者,了解并具备一定的网络安全意识,是必须的也是必要的,在平时的程序设计过程中,应该尽可能的想到可能暴露出的网络入侵情形,并将解决和防范的方法,运用到开发之中。

     在最后,让我们来总结一下开发过程中,可以采取的防范措施。
     1.PreparedStatement预编译sql封装,mybatis等框架经常
     要用,好处多多:防注入攻击、多次运行速度快  、
     防止数据库缓冲区溢出 、代码的可读性可维护性好。
     2.针对输入框内容,利用正则表达式
     进行验证,特殊字符转义,MD5加密。       
     3.坚持过滤输入和转义输出原则,
     针对XSS,编写防止XSS注入的工具类。
     4.注意接口调用的配置细节,都应该设
     置(一个IP地址在某一个时间段内,只能
     访问4~5次该接口)这类问题的注意点还有很多。
     5.设计程序时,多想想可能出现
     的漏洞,加强网络安全意识。
     6.了解网络安全检测工具 
     (1)Burp Suite
     Burp Suite 是用于攻击web 应用程序的集成平台,包含了许多工具。Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的HTTP 消息、持久性、认证、代理、日志、警报。
    (2)IDA Pro
  交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA。是目前最棒的一个静态反编译软件IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,交叉Windows或Linux WinCE MacOS平台主机来分析程序, 被公认为最好的花钱可以买到的逆向工程利器。
    (3)SQLmap(https://www.freebuf.com/articles/web/29942.html)
    SQLmap是一款用来检测与利用SQL注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与利用的自动化处理(数据库指纹、访问底层文件系统、执行命令)。
    (4)还有wireshark,nmap,nessus等等。

在这里插入图片描述
最后,有需要防止XSS注入工具类源码的,可以给本汪留言

猜你喜欢

转载自blog.csdn.net/weixin_42994251/article/details/104974916