推荐六个鲜为人知的 Composer 命令

2019-07-23 09:26:05

Composer 是 PHP 的一个依赖管理工具。 如果你是一名 PHP 开发人员,那么你很可能每天都在使用它并且频繁的运行命令 `require`, `install` 和 `update`。也许你并没有意识到, 我们可以使用一些其他的 Composer 命令,来更加轻松的使用它。 它有许多的命令可以使用,但今天我将分享我使用的并且每天都有帮助的 6 个命令。 ## show 先说下 `show` 命令。它允许您查看项目的所有已安装包(包括依赖项),以及查看相关包的说明。所有这些信息都可以在Composer锁文件(composer.lock)中找到, 但是使用 `show` 命令相对来说是一种更简单、更方便的一种查看包信息的方法。 要列出所有已安装的包及其版本号和说明,只需使用 `show`: ``` composer sh...

阅读全文

时序攻击

2019-07-12 19:06:20

> 在校验验证码或密码时,可以使用 [hash_equals](http://php.net/manual/zh/function.hash-equals.php) 方法 `hash_equals` 是可防止时序攻击的字符串比较,那么什么是时序攻击呢?比如我们使用这段代码进行比较 ```php $code == $_POST['code']; ``` 那么两个字符串是从第一位开始逐一进行比较的,发现不同就立即返回 false,那么通过计算返回的速度就知道了大概是哪一位开始不同的,这样就实现了电影中经常出现的按位破解密码的场景。而使用 hash_equals 比较两个字符串,无论字符串是否相等,函数的时间消耗是恒定的,这样可以有效的防止时序攻击。 如果 PHP 不支持此方法或想自己实现的,可以参考如下: ```php ```

阅读全文

thinkphp 漏洞记录

2019-06-18 16:12:14

thinkphp 漏洞记录:漏洞环境:5.0.20以下版本描述:ThinkPHP5.0在核心代码中实现了表单请求类型伪装的功能,该功能利用$_POST['_method']变量来传递真实的请求方法,当攻击者设置$_POST['_method']=__construct时,Request类的method方法便会将该类的变量进行覆盖,攻击者利用该方式将filter变量覆盖为system等函数名,当内部进行参数过滤时便会进行执行任意命令。引用:ThinkPHP 5.0命令执行漏洞分析及复现漏洞环境:v5.0.23及v5.1.31以下版本描述:ThinkPHP官方2018年12月9日发布重要的安全更新,修复了一个严重的远程代码执行漏洞。该更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的...

阅读全文

Laravel 实用小技巧

2019-05-05 11:40:18

1. 更新父表的  timestamps 如果需要在更新关联表的同时,更新父表的 timestamps,只需在关联表的 model 中添加 touches 属性 protected $touches = ['parentModel']; 2. 关联时使用 withDefault()  使用模型关联时,如果关联的模型不存在,如:  $post->user->name  $post->user 会返回 null, 继续访问 name 会抛出致命异常,  使用 withDefault 则会返回一个 User Model 的实例,访问 name 会变成 null   withDefault 可以接受参数(数组、闭包) 3. 跳转到指定控制器并附带参数 return redirect()->action('SomeController@method', ['param' => $value]); 4. Eloquent 中的日期时...

阅读全文

数据库二进制图片输出到前端

2018-08-18 17:21:23

在维护老项目时,发现有的项目居然把图片存在数据库,而不是图片链接,数据库里的图片字段类型是:`mediumblob`现在的需求是:从数据库取出图片在前端列表显示。大学是,老师就开始教导我们不要把图片存在数据库里,不方便维护,而且很占数据库体积。然后就没有碰到过存取数据库的二进制图片,突然碰到有点懵。估计大多数人没有这样的习惯,然后网上的资料也是大量重复过时的方法。目前接触到的前端渲染图片有两种:1、URL地址;2、 data:image/jpeg;base64  。于是想到在后端先用base64进行编码,然后在前端输出,果然可以!    代码如下:PHP:$base64Img = base64_encode($blobImg);HTML:<img src="data:image/jpe...

阅读全文

laravel-admin必填项加星号

2018-08-03 15:27:27

1.文件修改,vendor/encore/laravel-admin/src/Form/Field.php 新增:/** * Form element label classes. * * @var array */ protected $elementLabelClass = [];/** * Add the element label class. * * @param $class * * @return $this */ public function addElementLabelClass($class) { if (is_array($class) || is_string($class)) { $this->elementLabelClass = array_merge($this->elementLabelClass, (array) $class); $this->elementLabelClass = array_unique($this->elementLabelClass); } return $this; } 修改方法(约740行左右)getViewElemen...

阅读全文

程序员必须掌握英语单词

2018-07-11 18:47:42

application 应用程式 应用、应用程序application framework 应用程式框架、应用框架 应用程序框架architecture 架构、系统架构 体系结构argument 引数(传给函式的值)。叁见 parameter 叁数、实质叁数、实叁、自变量array 阵列 数组arrow operator arrow(箭头)运算子 箭头操作符assembly 装配件assembly language 组合语言 汇编语言assert(ion) 断言assign 指派、指定、设值、赋值 赋值assignment 指派、指定 赋值、分配assignment operator 指派(赋值)运算子 = 赋值操作符associated 相应的、相关的 相关的、关联、相应的associative container 关联式容器(对应 sequential container) 关联式容器atomic 不可分割的 原子的attribute 属...

阅读全文

IE下扫描枪不兼容问题

2018-07-10 19:04:35

 js监听条形码扫描枪barcode.on('keyup', function(event){ if(event.keyCode === 13){ // 逻辑 console.log(barcode.val()); } });在IE下扫描时经常出现条形码扫不全、获取不到条形码、条形码空白等问题。在其他浏览器则无此问题。经过一番对比和debug,发现IE只有在中文输入法下才会复现此bug。 所以只需切换输入法或开启键盘大写即可。  由于JS是无权限操控电脑的输入法和大写的,所以在非自己使用的情况下,应标注醒目提示用户使用英文输入法或开启键盘大写。

阅读全文

linux下全文检索引擎sphinx/coreseek的安装配置

2018-06-27 19:38:18

linux下全文检索引擎sphinx/coreseek的安装配置1.安装预装软件yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel 2.下载coreseek4.1https://download.csdn.net/download/dl425134845/9535621 3.解压tar zxvf coreseek-4.1-beta.tar.gz 4.安装进入到mmseg-3.2.14目录,在该目录中运行./bootstrap 命令。 5.指定安装coreseek安装路径./configure --prefix=/usr/local/mmseg3 6.实际安装coreseekmake && make install 7.测试coreseek的分词效果进入到/usr/local/mmseg3/bin 目录中,执行如下命令./mmseg -d /usr/local/mmseg3/etc /usr/local/src/co...

阅读全文

laravel单点登录-多个子域名站点

2018-06-23 11:02:11

单点登录     单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。  在laravel中实现这一功能非常简单。  首先要知道‘浏览器同源策略’原理: Cookie 是服务器写入浏览器的一小段信息,只有同源的网页才能共享。但是,两个网页一级域名相同,只是二级域名不同,浏览器允许通过设置document.domain共享 Cookie。 于是我们可以把session存在cookie里,然后多个子域名服务使用同样的域,就可以实现共享登录(SSO)。SESSION_DRIVER=cookie SESSION_DOMAIN=baidu.com

阅读全文

Referrer Policy 介绍

2018-04-20 16:37:05

        当用户在浏览器上点击一个链接时,会产生一个 HTTP 请求,用于获取新的页面内容,而在该请求的报头中,会包含一个 Referrer,用以指定该请求是从哪个页面跳转页来的,常被用于分析用户来源等信息。但是也有成为用户的一个不安全因素,比如有些网站直接将 sessionid 或是 token 放在地址栏里传递的,会原样不动地当作 Referrer 报头的内容传递给第三方网站。        所以就有了 Referrer Policy,用于过滤 Referrer 报头内容,目前是一个候选标准,不过已经有部分浏览器支持该标准。具体的可查看这里。指令值目前包含了以下几种指令值:enum Refer...

阅读全文

异常实时报警

2018-04-17 18:09:48

当线上服务出现异常时,有时候问题很难察觉,需要自己测试,甚至要等用户反馈问题才知道。于是想到能不能线上代码出现问题实时通知给相关负责人?比如:即时通讯工具(微信/QQ)或者邮箱。 答案是肯定的,在laravel中实现起来就很简单。(此方法仅针对业务代码出现异常,或者遭到攻击服务不能正常运行的异常) laravel中所有异常都由 App\Exceptions\Handler 类处理https://d.laravel-china.org/docs/5.4/errors#the-exception-handler 因此,我们只要捕获项目中所有异常并实时通知就简单多了。 本文测试发送163邮箱 先写好发送邮件内容格式,然后在 App\Exceptions\Handler 的 report 里...

阅读全文

php密码加密与验证

2018-04-17 17:53:34

password_hash是crypt()的一个简单封装,并且完全与现有的密码哈希兼容,使用了一个强的哈希算法,来产生足够强的盐值,并且会自动进行合适的轮次。 password_hash会生成60个字符,随时间推移,默认算法可能会有变化,因此需要数据库里储存结果的列可超过60个字符(最好是255个字符)前面7位字符代表hash的相关信息(密码算法类型和密码算法常量),可用password_get_info获取,后面53位为随机字符串。在生成散列(hash)值时,会自动创建安全的随机盐值。(在php5.5至php7.0时可以手动指定盐值,不过强烈建议不要自己为这个函数生成盐值(salt),因为php7.0以后就废除了)生成的hash会返回:使用的算法、cost 和盐值,所以验证散列值的所...

阅读全文

php扩展missing处理

2018-04-17 15:58:08

碰到一个问题: 在phpinfo里能看到mbstring和其他扩展已经安装, 但是使用composer update时却提示:mbstring missing 使用php -m也没有看到mbstring扩展  再三思考和排除法测算后,最后锁定两种可能:1.系统有安装多个php版本,配置不一样;2.php的运行模式不一样,如:php-fpm,cli 使用whereis php查看排除第一种可能然后使用:/usr/local/php/bin/php composer update可以正常安装依赖包,sudo cp -rf /usr/local/php/bin/php /usr/bin/php 主要原因是:两种不同的运行模式加载的php.ini不同 关于php的运行模式:CLI、FastCGI、mod_php参考相关资料:PHP 的命令行模式(cli)FastCgi与PHP-fpm之间是个什么样的关系P...

阅读全文