导读:

php的安全性问题是站长们最担心的事情,最近在查看网站运行日志时,发现有很多一句话木马的非法请求,如下:

当然了,我网站本身不存在后门木马等漏洞,自然不用担心会被入侵,但不怕贼偷就怕贼惦记,作为一个优秀的PHP程序员,自然不能让黑客小看咱们了,所以我决定增加个全局检测拦截非法请求的功能,并且设置IP黑名单,谁TMD再敢乱来,就让你进黑名单里。方法其他很简单,看下面的步骤。

1、在controller控制器目录里创建一个Common.php文件,继承自Controller

<?php
namespace app\index\controller;
use think\Controller;
use think\Request;
class Common extends Controller {protected function _initialize() {$ip = Request::instance()->ip();//检测请求信息$this->checkEval($ip);}/*** 检测请求信息是否包含一句话木马*/protected function checkEval($ip){   //1.先检测IP是不是在黑名单列表里$path=APP_PATH ."IP.txt";if(!file_exists($path)){//文件不存在就先创建fopen($path, "w");}//2.读取txt文件$file = file_get_contents($path);$result = str_replace("\r\n", ',', $file);$arr = explode(',',$result);//3.IP在黑名单里if(in_array($ip,$arr)){$this->error('您的IP已被加入黑名单限制访问!');exit;} //4.获取请求参数if (empty($_POST)) $_POST = $_GET;//如果为GET方式访问foreach ($_POST AS $key => $val) {//遍历POST参数if($val==null||$val=='') continue;//跳过//如果value值是数组类型,就转换为字符串$val=is_array($val) ? implode('',$val) : $val;//5.判断请求参数里是否包含一句话木马函数if(strpos($val,'eval') !== false||strpos($val,'@ev') !== false||strpos($val,'al(') !== false){//6.将IP添加到黑名单file_put_contents($path,$ip . "\r\n", FILE_APPEND);$this->error('系统检测到一句话木马非法请求信息');exit;          break;}}}
}
?>

2、所有的控制器文件都继承自Common.php,并且调用父级的_initialize()方法,例如首页的Index.php:

<?php
namespace app\index\controller;
use think\Controller;
use think\Db;
use think\Cache;
use think\Session;
use think\Request;
use think\Cookie;class Index extends Common
{   public function _initialize(){  parent::_initialize();      }//首页public function index(){return view();}
}
?>

【安全攻略】Thinkphp5.0全局拦截一句话木马等非法请求相关推荐

  1. 亲历:IT 从业者避免猝死攻略 v1.0

    作者:香蕉痞 出处:http://www.geekpark.net/read/view/191188?u=0 亲历:IT 从业者避免猝死攻略 v1.0 By 香蕉痞 | 2013/10/28 [核心提 ...

  2. (建议收藏)服务器宕机,效率排查攻略V2.0

    回复[面试题]获取2021年最新java面试题合集- 遇到服务器故障,问题出现的原因很少可以一下就想到.我们基本上都会从以下步骤入手: 一.尽可能搞清楚问题的前因后果 不要一下子就扎到服务器前面,你需 ...

  3. 自定义 thinkphp5.0全局异常报错,继承基类\exception解决

    情景介绍:url请求是get方式,此次报错是测试post请求,异常返回错误信息是否正确,结果异常返回信息有误,返回信息不正确. 以下下报错信息,显示  自定义全局异常报错信息是传入HttpExcept ...

  4. IT 民工避免猝死攻略 v1.0

    [核心提示] 大多数 IT 民工的职业病主要是来自长期保持固定坐姿,以及不健康的工作方式导致.我根据自己的实践经历,给大家分享一些"如何更健康地工作"的信息. 大概在两个月前,我把 ...

  5. 【游戏面包屑】开发类职业攻略1.0

    简单的做了一个技术类的职业规划,以及一些提升能力的方式.仅供参考,具体职位的介绍可以自行查阅资料. 游戏开发工程师职业路线 职业要求(偏独立开发者) 初级游戏客户端工程师     定位:掌握基础专业能 ...

  6. thinkphp5.0学习(六): 获取请求类和URL基本信息

    一.系统类(thinkphp\library\think) Config Controller Env Route Url View Request 二.系统方法(thinkphp\helper.ph ...

  7. Python 爬取蚂蜂窝旅游攻略 (+Scrapy框架+MySQL)

    前言:使用python+scrapy框架爬取蚂蜂窝旅游攻略 Git代码地址:https://github.com/qijingpei/mafengwo 获取代理IP地址的开源项目ProxyPool-m ...

  8. 商用台式电脑配置_装机不求人,10分钟电脑配置挑选速成攻略

    2017年7月,我发布了这篇<电脑配置挑选速成攻略>的文章,电子产品发展变化速度极快,一年过去了, 有一些内容已经老旧过时,于是有了今天的<电脑配置挑选速成攻略 2.0> 版本 ...

  9. C++游戏 Alive系列 图鉴少量攻略

    C++游戏 Alive系列 图鉴&少量攻略 11月5号 这款c++小游戏 Alive 更新了NOIP前的最后一个版本 从1.0到5.1 Alive开发组经历了风风雨雨 在此我代表@四向搜 @X ...

最新文章

  1. java.lang.NullPointerException空指针问题
  2. 视觉深度伪造检测技术综述
  3. 测试基于2SK241的150kHz的导航信号高频放大器
  4. 【HTML】处理<br>换行符追加到前端换行无效的问题 --- html中渲染的字符串中包含HTML标签无效的处理方法,字符串中包含HTML标签被转义的问题 解决
  5. ios开发多线程篇--异步加载网络图片GCD
  6. 洛谷P1333 瑞瑞的木棍(欧拉回路)
  7. 博客园添加鼠标粒子吸附特效
  8. empinfo Oracle数据库,Oracle:其他数据库对象
  9. 一起学设计模式 - 桥接模式
  10. 计算机网络第二章-----物理层
  11. 实现手风琴抽屉式网页特效
  12. Python - PyMuPDF (fitz) 处理 PDF
  13. 自增约束(auto_increment)
  14. import torchvision报错,UserWarning: Failed to load image Python extension: Could not find module ‘C:\U
  15. GitHub上传超过100M的单个文件(包括处理和解决)
  16. 黑龙江软件第三方检测机构/软件登记(退税)测试报告
  17. java服务器常见状态码
  18. radan7中文使用手册
  19. 青年论坛:谈判的情感力量
  20. 共享单车数据集超10万条

热门文章

  1. 点石互动--石头之:专访AsiaSEO创始人谢文怡
  2. 微信开发学习日记(七):开源微商城wemall
  3. ABAP总结-转载,好全啊
  4. Cherry-Pick、Squash Commits、Rebase使用
  5. 程序猿如何突破职场瓶颈期???你一定不能错过!
  6. pg_tables,pg_indexes,pg_views,pg_user,pg_roles,pg_rules,pg_settings详解
  7. 我爱编程之Java学习之路
  8. JAVA【1024】程序员趣味活动,给定一串数字字符串,保证顺序不变的情况下,加入任意数量个“+“,使其结果等于1024
  9. OpenStack主要功能和作用
  10. 血液里多少毫升酒精才算是醉驾