我是从2015年底开始使用Laravel5框架的,刚接触的时候的是Laravel5.2版本,刚好那个小版本有很多坑,使用起来不是很顺手,但最后还是硬着头皮扛下来了。后面随着使用时间的增长,彻底爱上了这个框架,以至于现在写个人网站和公司的新项目,都习惯性使用Laravel。

总体算下来,我使用Laravel框架也三四年了,一路走来发现了很多Laravel框架的优点。今天就谈谈Laravel框架的一个优点:安全性。

有一个很专业的名词叫“安全最大化”,白话一点说,就是网站安全。其实Laravel5框架的安全性已经做的很好了,下面我们就结合Laravel框架,大概介绍一下安全最大化的几个要点:

1、服务器方面,Laravel5框架项目根目录是public,这也就意味着,public以外的文件,都不能通过浏览器直接访问。所以除非你泄露了服务器的用户名密码,基本不需要考虑用户直接访问逻辑代码或者配置文件的问题。

2、防XSS攻击,XSS防范其实很简单,核心就是不要信任用户输入的内容。对用户输入的内容一定要做最小范围的规则校验。万一没拦住,如果需要在页面输出用户输入的内容,可以使用{{}}解析,可以将脚本转为实体字符。另外把cookie设置HttpOnly,防止cookie劫持也是很有必要的。

3、防CSRF,CSRF中文名叫跨站请求伪造,最常见的就是伪造表单请求,对这种攻击,Laravel采用的是csrf_token字符串验证的方式处理的,另外还可以配合各种表单验证码校验。

4、文件上传,文件上传主要需要注意的是文件类型的限制,不能单纯校验文件后缀。对于图片类文件,可以上传之后再一次用画布重新绘制,配合压缩和裁剪处理,这样文件上传和图片优化就一起做了。另外,上传文件的存储目录权限要控制好,比如设置为不可执行。

5、SQL注入,Laravel框架中,是使用PDO方式连接数据库,SQL语句使用的是预编译执行,所以如果不是直接使用DB执行SQL语句,基本不会有注入的问题,另外需要注意的一个问题,就是SQL连接的账号密码泄漏,最好将SQL服务器设置为指定ip可访问,不能远程连接。

目前能想到的,在web项目中可能存在的安全问题大概就这些,后面遇到了再做补充吧。

本文为 陈华 原创,欢迎转载,但请注明出处:http://www.ichenhua.cn/blog/post/8