一个关于阿里云PHP webshell报警的一丁点思考

一大早就看到阿里云控制台一片红,作为红点强迫症必须要把它去掉,点开一看是几个webshell,并且是几台服务器的同一个文件,想必不是被入侵应该是代码问题,如果这么多服务器被入侵,可是够忙活的了。于是我把文件下载下来,查看一下代码:大约的逻辑是这样的$act = $request->get('act'); $userId = $request->get('user_id); ... $params = [$userId,...]; call_user_func_array($act,$params); 很明显这样是有问题的,问题原因是如果act是一...

PHP单例设计模式实例

特点单例模式是PHP中一种常见的设计模式,主要有以下几个特点:单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。实现基于单例模式特点,要实现单例模式非常简单:构造方法(__constructor)设为私有(必须自己创建实例,保证不被外部创建)关闭clone,关闭serialize(还是为了保证唯一)一个静态(static)属性保存实例一个静态(static)方法创建实例(因为不能被new,所以只能是静态方法)看起来已经很严密了,来个实际例子吧final class Singleton { private static $instance...

在centos上无界面运行浏览器

安装python环境可跳过1)python环境, 检查python的版本,是否为2.7.x,如果不是,安装2.7.6。如果是centos 6.x,升级python2.6到python2.7,参考教程 http://ruiaylin.github.io/2014/12/12/python%20update/如果是centos 7.x,默认就是python2.7,不用升级如果是mac osx,可以使用virtualenv,安装python2.7安装浏览器环境 selenium依赖.(如果是mac环境,仅需安装firefox, 但确保版本是 firefox 36.0,使用最新的版本会报错)yu...

PHP程序员如何理解IoC/DI

思想思想是解决问题的根本 思想必须转换成习惯 构建一套完整的思想体系是开发能力成熟的标志——《简单之美》(前言)“成功的软件项目就是那些提交产物达到或超出客户的预期的项目,而且开发过程符合时间和费用上的要求,结果在面对变化和调整时有弹性。”——《面向对象分析与设计》(第3版)P.236术语介绍——引用《Spring 2.0 技术手册》林信良非侵入性 No intrusive框架的目标之一是非侵入性(No intrusive)组件可以直接拿到另一个应用或框架之中使用增加组件的可重用性(Reusability)容器(Container)管理对象的生成、资源取得、销毁等生命周期建立对象与对象之...

深入理解DIP、IoC、DI以及IoC容器

摘要面向对象设计(OOD)有助于我们开发出高性能、易扩展以及易复用的程序。其中,OOD有一个重要的思想那就是依赖倒置原则(DIP),并由此引申出IoC、DI以及Ioc容器等概念。通过本文我们将一起学习这些概念,并理清他们之间微妙的关系。前言对于大部分小菜来说,当听到大牛们高谈DIP、IoC、DI以及IoC容器等名词时,有没有瞬间石化的感觉?其实,这些“高大上”的名词,理解起来也并不是那么的难,关键在于入门。只要我们入门了,然后循序渐进,假以时日,自然水到渠成。好吧,我们先初略了解一下这些概念。依赖倒置原则(DIP):一种软件架构设计的原则(抽象概念)。控制反转(IoC):一种反转流、依赖...