做好一个网站,最不容忽视的一个问题就是安全问题。不从服务器其他安全问题入手,单从web程序入手,入侵一个网站都有哪些方式?简单归纳下:
第一、SQL注入
说起网站的安全问题,大家第一个会想到的就是SQL注入问题。“SQL注入”简单说,就是黑客提交恶意的SQL语句字符串做数据请求,而网站程序并没有对这些字符串做好验证拦截,进一步丢给了数据库执行。
楠神在mysql教程中有详细介绍,具体可看这篇文章《SQL注入安全问题》,这里不做更多介绍。
预防SQL注入,一定要做对涉及操作数据库的前台提交数据做好验证。一旦网站出现SQL漏洞被黑客利用,不仅可以无障碍登录管理后台,还会被拿到整个服务器的webshell。
第二、文件上传漏洞
网站业务需要,会有这样的上传功能:
这个功能,也是如果不做好上传文件类型验证,也会出现重大的安全隐患。黑客可利用此漏洞上传木马文件。
许多第三方框架、服务,都曾经被爆出文件上传漏洞,比如很早之前的Struts2,以及富文本编辑器等等。
预防的方式说几种:
文件上传的目录设置为不可执行。
判断文件类型,在判断文件类型的时候,可以结合使用MIME Type,后缀检查等方式。因为对于上传文件,不能简单地通过后缀名称来判断文件的类型,因为攻击者可以将可执行文件的后缀名称改为图片或其他后缀类型,诱导用户执行。 对上传的文件类型进行白名单校验,只允许上传可靠类型。
上传的文件需要进行重新命名,使攻击者无法猜想上传文件的访问路径,将极大地增加攻击成本,同时向shell.php.rar.ara这种文件,因为重命名而无法成功实施攻击。
限制上传文件的大小。
单独设置文件服务器的域名。
第三、远程执行命令漏洞
最近TP5框架也爆出了远程执行命令漏洞,说到底这种漏洞还是本身自己的程序对网站路由没有做好验证。
《thinkPHP5远程执行命令漏洞:通过路由即可拿到webshell》
其实以上三种,也是黑客获取网站服务器webshell的常见方式。
第四、XSS攻击
XSS跨站脚本攻击,这是使用JS攻击一个网站的常用方式,具体的介绍看着这里
XSS常见利用手段是劫持用户cookie并登陆其账户。
第五、CSRF攻击
CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:
攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。
具体了解CRSF看《常见的Web攻击手段之CSRF攻击》
第六、利用网站越权漏洞
1)垂直权限管理
访问控制实际上是建立用户与权限之间的对应关系,即“基于角色的访问控制”,RBAC。不同角色的权限有高低之分。高权限角色访问低权限角色的资源往往是被允许的,而低权限角色访问高权限的资源往往被禁止的。在配置权限时,应当使用“最小权限原则”,并使用“默认拒绝”的策略,只对有需要的主体单独配置”允许”的策略,这在很多时候能够避免发生“越权访问”。
例如,Spring Security, Apache Shiro都可以建立垂直权限管理。
2)水平权限管理
水平权限问题在同一个角色上,系统只验证了访问数据的角色,没有对角色内的用户做细分,由于水平权限管理是系统缺乏一个数据级的访问控制所造成的,因此水平权限管理又可以称之为“基于数据的访问控制”。
举个理解,比如我们之前的一个助手产品,客户端用户删除评论功能,如果没有做水平权限管理,即设置只有本人才可以删除自己的评论,那么用户通过修改评论id就可以删除别人的评论这个就存在危险的越权操作。
这个层面,基本需要我们业务层面去处理,但是这个也是最为经常遗落的安全点。
第七、拒绝服务攻击
《DDOS的产生》
第八、持续更新中