【安全攻略】Thinkphp5.0全局拦截一句话木马等非法请求
导读:
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全局拦截一句话木马等非法请求相关推荐
- 亲历:IT 从业者避免猝死攻略 v1.0
作者:香蕉痞 出处:http://www.geekpark.net/read/view/191188?u=0 亲历:IT 从业者避免猝死攻略 v1.0 By 香蕉痞 | 2013/10/28 [核心提 ...
- (建议收藏)服务器宕机,效率排查攻略V2.0
回复[面试题]获取2021年最新java面试题合集- 遇到服务器故障,问题出现的原因很少可以一下就想到.我们基本上都会从以下步骤入手: 一.尽可能搞清楚问题的前因后果 不要一下子就扎到服务器前面,你需 ...
- 自定义 thinkphp5.0全局异常报错,继承基类\exception解决
情景介绍:url请求是get方式,此次报错是测试post请求,异常返回错误信息是否正确,结果异常返回信息有误,返回信息不正确. 以下下报错信息,显示 自定义全局异常报错信息是传入HttpExcept ...
- IT 民工避免猝死攻略 v1.0
[核心提示] 大多数 IT 民工的职业病主要是来自长期保持固定坐姿,以及不健康的工作方式导致.我根据自己的实践经历,给大家分享一些"如何更健康地工作"的信息. 大概在两个月前,我把 ...
- 【游戏面包屑】开发类职业攻略1.0
简单的做了一个技术类的职业规划,以及一些提升能力的方式.仅供参考,具体职位的介绍可以自行查阅资料. 游戏开发工程师职业路线 职业要求(偏独立开发者) 初级游戏客户端工程师 定位:掌握基础专业能 ...
- thinkphp5.0学习(六): 获取请求类和URL基本信息
一.系统类(thinkphp\library\think) Config Controller Env Route Url View Request 二.系统方法(thinkphp\helper.ph ...
- Python 爬取蚂蜂窝旅游攻略 (+Scrapy框架+MySQL)
前言:使用python+scrapy框架爬取蚂蜂窝旅游攻略 Git代码地址:https://github.com/qijingpei/mafengwo 获取代理IP地址的开源项目ProxyPool-m ...
- 商用台式电脑配置_装机不求人,10分钟电脑配置挑选速成攻略
2017年7月,我发布了这篇<电脑配置挑选速成攻略>的文章,电子产品发展变化速度极快,一年过去了, 有一些内容已经老旧过时,于是有了今天的<电脑配置挑选速成攻略 2.0> 版本 ...
- C++游戏 Alive系列 图鉴少量攻略
C++游戏 Alive系列 图鉴&少量攻略 11月5号 这款c++小游戏 Alive 更新了NOIP前的最后一个版本 从1.0到5.1 Alive开发组经历了风风雨雨 在此我代表@四向搜 @X ...
最新文章
- java.lang.NullPointerException空指针问题
- 视觉深度伪造检测技术综述
- 测试基于2SK241的150kHz的导航信号高频放大器
- 【HTML】处理<br>换行符追加到前端换行无效的问题 --- html中渲染的字符串中包含HTML标签无效的处理方法,字符串中包含HTML标签被转义的问题 解决
- ios开发多线程篇--异步加载网络图片GCD
- 洛谷P1333 瑞瑞的木棍(欧拉回路)
- 博客园添加鼠标粒子吸附特效
- empinfo Oracle数据库,Oracle:其他数据库对象
- 一起学设计模式 - 桥接模式
- 计算机网络第二章-----物理层
- 实现手风琴抽屉式网页特效
- Python - PyMuPDF (fitz) 处理 PDF
- 自增约束(auto_increment)
- import torchvision报错,UserWarning: Failed to load image Python extension: Could not find module ‘C:\U
- GitHub上传超过100M的单个文件(包括处理和解决)
- 黑龙江软件第三方检测机构/软件登记(退税)测试报告
- java服务器常见状态码
- radan7中文使用手册
- 青年论坛:谈判的情感力量
- 共享单车数据集超10万条
热门文章
- 点石互动--石头之:专访AsiaSEO创始人谢文怡
- 微信开发学习日记(七):开源微商城wemall
- ABAP总结-转载,好全啊
- Cherry-Pick、Squash Commits、Rebase使用
- 程序猿如何突破职场瓶颈期???你一定不能错过!
- pg_tables,pg_indexes,pg_views,pg_user,pg_roles,pg_rules,pg_settings详解
- 我爱编程之Java学习之路
- JAVA【1024】程序员趣味活动,给定一串数字字符串,保证顺序不变的情况下,加入任意数量个“+“,使其结果等于1024
- OpenStack主要功能和作用
- 血液里多少毫升酒精才算是醉驾