一、输入安全

  • 设置public目录为唯一对外访问目录,不要把资源文件放入应用目录;
  • 开启表单令牌验证避免数据的重复提交,能起到CSRF防御作用;
  • 使用框架提供的请求变量获取方法(Request类param方法及input助手函数)而不是原生系统变量获取用户输入数据;
  • 对不同的应用需求设置default_filter过滤规则(默认没有任何过滤规则),常见的安全过滤函数包括stripslashes、htmlentities、htmlspecialchars和strip_tags等,请根据业务场景选择最合适的过滤方法;
  • 使用验证类或者验证方法对业务数据设置必要的验证规则;
  • 如果可能开启强制路由或者设置MISS路由规则,严格规范每个URL请求;

二、数据库安全

  • 尽量少使用数组查询条件而应该使用查询表达式替代;
  • 尽量少使用字符串查询条件,如果不得已的情况下 使用手动参数绑定功能;
  • 不要让用户输入决定要查询或者写入的字段;
  • 对于敏感数据在输出的时候使用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/upload/

四、其他安全建议

  • 对所有公共的操作方法做必要的安全检查,防止用户通过URL直接调用;
  • 不要缓存需要用户认证的页面;
  • 对用户的上传文件,做必要的安全检查,例如上传路径和非法格式;
  • 对于项目进行充分的测试,不要生成业务逻辑的安全隐患(这可能是最大的安全问题);
  • 最后一点,做好服务器的安全防护,安全问题的关键其实是你的最薄弱的环节;

TP5学习(十二):安全相关推荐

  1. OpenCV与图像处理学习十二——图像形状特征之HOG特征

    OpenCV与图像处理学习十二--图像形状特征之HOG特征 一.图像特征理解 1.1 颜色特征 1.2 纹理特征 1.3 形状特征 1.4 空间关系特征 二.形状特征描述 2.1 HOG特征 2.1. ...

  2. PyTorch框架学习十二——损失函数

    PyTorch框架学习十二--损失函数 一.损失函数的作用 二.18种常见损失函数简述 1.L1Loss(MAE) 2.MSELoss 3.SmoothL1Loss 4.交叉熵CrossEntropy ...

  3. (转)SpringMVC学习(十二)——SpringMVC中的拦截器

    http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...

  4. 【FastAPI 学习十二】定时任务篇 (移步博客园或个人网站 无广告,界面清爽整洁)

    声明 目前个人放弃CSDN平台,文章只发布于个人网站和博客园 博客园地址 [FastAPI 学习十二]定时任务篇

  5. C1认证学习十二(网络拓扑)

    C1认证学习十二(网络拓扑) 任务背景 互联网是一个广义的概念,它泛指是一切通过网路连接在一起的计算机的集合,所以,若果只是局部观察,那就不能再说互联网是一个互联的了,那么,如果说对于一个公司来说,具 ...

  6. Js高级程序设计第三版学习(十二章)

                                  Js高级程序设计第三版学习(十二章) 第十二章 DOM2和DOM3   1.样式: 访问样式属性 任何支持style特性的HTML元素都有一 ...

  7. linux中ftp的工作原理,Linux系统学习 十二、VSFTP服务—简介与原理

    1.简介与原理 互联网诞生之初就存在三大服务:WWW.FTP.邮件 FTP主要针对企业级,可以设置权限,对不同等级的资料针对不同权限人员显示. 但是像网盘这样的基本没有权限划分. 简介: FTP(Fi ...

  8. Android OpenGL ES 学习(十二) - MediaCodec + OpenGL 解析H264视频+滤镜

    OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学 ...

  9. SQL学习十二、插入数据

    前面学习记录的都是查询数据,那些也是SQL中最常用的语句,这篇我们来学习和积累一下相数据库中插入数据的SQL. 另外,需要注意的是,很多数据库对查询操作要求的权限可能低一些,但是对于插入.修改.删除等 ...

  10. Python学习十二:Flask框架

    文章目录 一.Flask 简介 1.1 安装虚拟环境 1.1.1 安装Virtualenv 1.1.2 创建虚拟环境 1.1.3 激活虚拟环境 1.2 安装Flask 1.3 第一个Flask 二.F ...

最新文章

  1. python字符串替换空格_python - 用pandas中的NaN替换空白值(空格)
  2. Web架构师成长之路
  3. php并发访问排队_PHP高并发处理方案
  4. 利用Selenium爬取淘宝商品信息
  5. 邮局--dp经典问题
  6. CentOS 7 上 Docker 安装
  7. php 监听 扫描枪,jquery监听扫码枪获得值
  8. Linux之grep命令详解
  9. Use mingw on windows
  10. [BZOJ1602BZOJ1787BZOJ2144]树上LCA的算法巩固练习
  11. python中求列表的最大最小值,如何在python中获取列表的最小和最大元素
  12. 红帽linux64系统下载,红帽Linux 8.0 iso-RHEL 8.0 64位下载|RHEL 8.0 64位 - 爱学府软件园...
  13. Android WebView 示例
  14. 安卓手机的APP图标尺寸规范和图标命名规范
  15. Wordpress Theme 主题森林商城有些什么?
  16. Python error:Compressed file ended before the end-of-stream marker was reached
  17. 用pigz来加速解压tar.gz
  18. C++ string CString 详解
  19. Linux替换Docker镜像源
  20. (附源码)Python云顶之弈数据分析系统 毕业设计451545

热门文章

  1. elasticsearch搭建遇到的问题整理合集2
  2. 软件定制服务收费流程和标准
  3. 查立得快搜系统(aso+xls) V1.0
  4. 《炬丰科技-半导体工艺》氮化栅氧化物的表面制备挑战
  5. 这次不怕撕坏了,区块链电子公告来了
  6. islands打炉石传说
  7. 【学习笔记】互联网金融:芝麻信用分的建模过程
  8. 计算机网络 - 大学精品公开课
  9. 为什么拼团电商APP能成功?
  10. 龙芯平台python答案_在龙芯平台上自己编写原创应用——“动态壁纸”