15Linux系统和应用安全-Docker安全:在虚拟的环境中,就不用考虑安全了吗?
在13讲中,我们讲了Linux系统安全。但是,当你在和同事讨论Linux系统安全的时候,同事表示,公司的服务都是通过Docker来进行容器化部署的。开发在操作中,并不会接触实际的Linux服务器,所以不会去关注Linux安全 。而且,因为容器是隔离的,就算容器被黑客攻击了,也只是容器内部受到影响,对宿主的Linux系统和网络都不会产生太大影响。
你平时使用手机连接无线网络的时候,一定看到过这样的安全提示:不要连接陌生的Wi-Fi。也一定看过很多这样的报道:某先生/女士因为使用了陌生的Wi-Fi,信息遭到泄露,不仅账号被盗用,还造成了经济损失。
从这一讲开始,我们讨论Linux系统和应用安全。我们知道,在开发一个应用的过程中,需要涉及代码、操作系统、网络和数据库等多个方面。所以,只是了解代码安全肯定是不够的,我们还需要了解常见的基础环境和工具中的安全机制,学会通过正确地配置这些安全机制,来提升安全保障。
我在Web安全的前6讲中,给你讲解了各种漏洞的产生和防护方法,比如:XSS、SQL注入、CSRF、SSRF和插件漏洞。除了这些漏洞之外,我也着重强调了一点,黑客善于通过“蛛丝马迹”推断出代码逻辑,然后发起攻击。学习了这些内容,在实际工作的过程中,我们其实就能基本避免大部分的Web安全问题了。但是,有一天,我又遇到了新的问题。
你平时在Debug的时候,一定首先会去查看错误信息。根据错误信息,你能够了解究竟是什么情况引发了什么样的错误。同样地,黑客也能够通过错误信息,推断出你的后台代码逻辑。那么,黑客究竟是怎么做的呢?接下来,我们就一起看一下这个过程。
我们都知道,Java是一种高层级的语言。在Java中,你不需要直接操控内存,大部分的服务和组件都已经有了成熟的封装。除此之外,Java是一种先编译再执行的语言,无法像JavaScript那样随时插入一段代码。因此,很多人会认为,Java是一个安全的语言。如果使用Java开发服务,我们只需要考虑逻辑层的安全问题即可。但是,Java真的这么安全吗?
前面我们讲了2种常见的Web攻击:XSS和SQL注入。它们分别篡改了原始的HTML和SQL逻辑,从而使得黑客能够执行自定义的功能。那么除了对代码逻辑进行篡改,黑客还能通过什么方式发起Web攻击呢?
在上一讲中,我们介绍了XSS攻击。今天,我们来介绍另外一种常见的Web攻击:SQL注入。
在讲正文之前,让我们先来看一个案例。某天,当你在查看应用的管理后台时,发现有很多异常的操作。接着,你很快反应过来了,这应该是黑客成功登录了管理员账户。于是,你立刻找到管理员,责问他是不是设置了弱密码。管理员很无辜地表示,自己的密码非常复杂,不可能泄露,但是为了安全起见,他还是立即修改了当前的密码。奇怪的是,第二天,黑客还是能够继续登录管理员账号。问题来了,黑客究竟是怎么做到的呢?你觉得这里面的问题究竟出在哪里呢?你可以先自己思考一下,然后跟着我开始今天的学习!
在前面的课程中,我们重点讲解了安全的一些基础知识,更多地是从宏观的层面上来谈论安全。但安全不是一个靠宏观指导就能够落地的东西。因此,接下来我会结合真实案例中的各种安全问题,来介绍具体的安全防护手段和工具。今天,我们就先从最基础的Web安全开始。