第八周的学习心得——安全

输入安全
虽然5.0的底层安全防护比之前版本要强大不少,但永远不要相信用户提交的数据,建议务必遵守下面规则:
设置 public 目录为唯一对外访问目录,不要把资源文件放入应用目录;
开启表单令牌验证避免数据的重复提交,能起到 CSRF 防御作用;
使用框架提供的请求变量获取方法(Request类 param 方法及 input 助手函数)而不
是原生系统变量获取用户输入数据;
对不同的应用需求设置 default_filter 过滤规则(默认没有任何过滤规则),常见
的安全过滤函数包括 stripslashes 、 htmlentities 、 htmlspecialchars 和strip_tags 等,请根据业务场景选择最合适的过滤方法;
使用验证类或者验证方法对业务数据设置必要的验证规则;
如果可能开启强制路由或者设置MISS路由规则,严格规范每个URL请求;
数据库安全
在确保用户请求的数据安全之后,数据库的安全隐患就已经很少了,因为 5.0 版本的数据操作使用了PDO预处理机制及自动参数绑定功能,请确保:
尽量少使用数组查询条件而应该使用查询表达式替代;
尽量少使用字符串查询条件,如果不得已的情况下 使用手动参数绑定功能;
不要让用户输入决定要查询或者写入的字段;
对于敏感数据在输出的时候使用 hidden 方法进行隐藏;
对于数据的写入操作应当做好权限检查工作;
写入数据严格使用 field 方法限制写入字段;
对于需要输出到页面的数据做好必要的 XSS 过滤;
上传安全
网站的上传功能也是一个非常容易被攻击的入口,所以对上传功能的安全检查是尤其必要的。
系统的 think\File 提供了文件上传的安全支持,包括对文件后缀、文件类型、文件大小
以及上传图片文件的合法性检查,确保你已经在上传操作中启用了这些合法性检查。
为了方便版本升级,并且保证public目录为唯一的web可访问目录,资源文件可以放到项目之外,例如项目目录为
/home/www/thinkphp/
那么资源目录、上传文件保存的目录
/home/www/resource/
/home/www/resource/upload/
为了项目的可维护性,目录操作最好不超出本项目的根目录,所以需要把resource目录映射到根目录
ln -s /home/www/resource/ /home/www/thinkphp/resource/
如果上传文件也需要web访问,可以生成一个软连接到public
ln -s /home/www/thinkphp/resource/upload/ /home/www/thinkphp/public/uplo
ad/
其它安全建议
其它的一些安全建议:
对所有公共的操作方法做必要的安全检查,防止用户通过URL直接调用;
不要缓存需要用户认证的页面;
对用户的上传文件,做必要的安全检查,例如上传路径和非法格式;
对于项目进行充分的测试,不要生成业务逻辑的安全隐患(这可能是最大的安全问
题);
最后一点,做好服务器的安全防护,安全问题的关键其实是你的最薄弱的环节;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值