首页
学习
活动
专区
工具
TVP
发布

PHP在线

php技术专栏,来自公众号phpdaily,不定时发布当下热门的开发技术及解决方案!
专栏成员
461
文章
766474
阅读量
119
订阅数
优化 MySQL: 3 个简单的小调整
我并不期望成为一个专家级的 DBA,但是,在我优化 MySQL 时,我推崇 80/20 原则,明确说就是通过简单的调整一些配置,你可以压榨出高达 80% 的性能提升。尤其是在服务器资源越来越便宜的当下。
wangxl
2018-07-27
6200
精读《async/await 是把双刃剑》
终于,async/await 也被吐槽了。Aditya Agarwal 认为 async/await 语法让我们陷入了新的麻烦之中。
wangxl
2018-07-27
6580
看图理解JWT如何用于单点登录
目录 1. 前言 2.方案介绍 3.方案总结 4.本文小结
wangxl
2018-07-27
3.5K0
php面试题及答案
答案:Safe_mode是php的安全模式。开启之后,主要会对系统操作、文件、权限设置等方法产生 影响,主要用来应对webshell。以下是受到影响的一些函数:
wangxl
2018-07-27
2.1K0
新手快速学习ES6语法,用最快的速度入门ES6就看这里
最近正在学习ES6,对于ES6的语法有一些自己的理解,想写这篇文章帮助跟我一样的新手快速入门ES6而不至于连代码都看不懂.至于开发环境的搭建什么的例如balel下载什么的,百度上有很多的教程了.我在这就不再赘述了,不懂得童鞋自行查找,我们将精力放在语法上.
wangxl
2018-07-27
6730
关注专栏作者,随时接收最新技术干货
wangxl
悠悠科技研发工程师
Porco1Rosso
自由工作者
用户2333534
时尚先生文化管理有限公司总监
小哥哥,小姐姐,我有一份tcp、http面试指南你要吗?
要说http就绕不开tcp,TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。但是,http是基于tcp协议的。
wangxl
2018-07-27
4790
PHP代码审计
1.概述 代码审核,是对应用程序源代码进行系统性检查的工作。它的目的是为了找到并且修复应用程序在开发阶段存在的一些漏洞或者程序逻辑错误,避免程序漏洞被非法利用给企业带来不必要的风险。 代码审核不是简单的检查代码,审核代码的原因是确保代码能安全的做到对信息和资源进行足够的保护,所以熟悉整个应用程序的业务流程对于控制潜在的风险是非常重要的。审核人员可以使用类似下面的问题对开发者进行访谈,来收集应用程序信息。 应用程序中包含什么类型的敏感信息,应用程序怎么保护这些信息的? 应用程序是对内提供服务,还是对外?哪些人会使用,他们都是可信用户么? 应用程序部署在哪里? 应用程序对于企业的重要性? 最好的方式是做一个checklist,让开发人员填写。Checklist能比较直观的反映应用程序的信息和开发人员所做的编码安全,它应该涵盖可能存在严重漏洞的模块,例如:数据验证、身份认证、会话管理、授权、加密、错误处理、日志、安全配置、网络架构。 2.输入验证和输出显示 大多数漏洞的形成原因主要都是未对输入数据进行安全验证或对输出数据未经过安全处理,比较严格的数据验证方式为: 对数据进行精确匹配; 接受白名单的数据; 拒绝黑名单的数据; 对匹配黑名单的数据进行编码; 在PHP中可由用户输入的变量列表如下: $_SERVER $_GET $_POST $_COOKIE $_REQUEST $_FILES $_ENV $_HTTP_COOKIE_VARS $_HTTP_ENV_VARS $_HTTP_GET_VARS $_HTTP_POST_FILES $_HTTP_POST_VARS $_HTTP_SERVER_VARS 我们应该对这些输入变量进行检查 1.命令注入 PHP执行系统命令可以使用以下几个函数:system、exec、passthru、“、shell_exec、popen、proc_open、pcntl_exec 我们通过在全部程序文件中搜索这些函数,确定函数的参数是否会因为外部提交而改变,检查这些参数是否有经过安全处理。 防范方法: 1.使用自定义函数或函数库来替代外部命令的功能 2.使用escapeshellarg函数来处理命令参数 3.使用safe_mode_exec_dir指定可执行文件的路径 2.跨站脚本 反 射型跨站常常出现在用户提交的变量接受以后经过处理,直接输出显示给客户端;存储型跨站常常出现在用户提交的变量接受过经过处理后,存储在数据库里,然后 又从数据库中读取到此信息输出到客户端。输出函数经常使用:echo、print、printf、vprintf、< %=$test%> 对于反射型跨站,因为是立即输出显示给客户端,所以应该在当前的php页面检查变量被客户提交之后有无立即显示,在这个过程中变量是否有经过安全检查。 对于存储型跨站,检查变量在输入后入库,又输出显示的这个过程中,变量是否有经过安全检查。 防范方法: 1.如果输入数据只包含字母和数字,那么任何特殊字符都应当阻止 2.对输入的数据经行严格匹配,比如邮件格式,用户名只包含英文或者中文、下划线、连字符 3.对输出进行HTML编码,编码规范 < < > > ( ( ) ) # # & & ” “ ‘ ‘ ` %60 3.文件包含 PHP可能出现文件包含的函数:include、include_once、require、require_once、show_source、highlight_file、readfile、file_get_contents、fopen、file 防范方法: 1.对输入数据进行精确匹配,比如根据变量的值确定语言en.php、cn.php,那么这两个文件放在同一个目录下’language/’.$_POST[‘lang’].’.php’,那么检查提交的数据是否是en或者cn是最严格的,检查是否只包含字母也不错 2.通过过滤参数中的/、..等字符 4.代码注入 PHP可能出现代码注入的函数:eval、preg_replace+/e、assert、call_user_func、call_user_func_array、create_function 查找程序中程序中使用这些函数的地方,检查提交变量是否用户可控,有无做输入验证 防范方法: 1.输入数据精确匹配 2.白名单方式过滤可执行的函数 5.SQL注入 SQL注入因为要操作数据库,所以一般会查找SQL语句关键字:insert、delete、update、select,查看传递的变量参数是否用户可控制,有无做过安全处理 防范方法: 使用参数化查询 6.XPath注入 Xpath用于操作xml,我们通过搜索xpath来分析,提交给xpath函数的参数是否有经过安全处理 防范方法: 对于数据进行精确匹配 7.HTTP响应拆分 PHP中可导致HTTP响应拆分的
wangxl
2018-07-27
2.8K0
MySQL · 引擎特性 · MySQL内核对读写分离的支持
读写分离的场景应用 随着业务增长,数据越来越大,用户对数据的读取需求也随之越来越多,比如各种AP操作,都需要把数据从数据库中读取出来,用户可以通过开通多个只读实例,将读请求业务直接连接到只读实例上。使用RDS云数据库的读写分离功能,用户只需要一个请求地址,业务不需要做任何修改,由RDS自带的读写分离中间件服务来完成读写请求的路由及根据不同的只读实例规格进行不同的负载均衡,同时当只读实例出现故障时能够主动摘除,减少对用户的影响。对用户达到一键开通,一个地址,快速使用。 MySQL内核为读写分离的实现提供了支持,包括通过系统variable设置目标节点,session或者是事务的只读属性,等待/检查指定的事务是否已经apply到只读节点上,以及事务状态的实时动态跟踪等的能力。本文会带领大家一起来看看这些特征。说明一下,本文的内容基于RDS MySQL 5.6与RDS MySQL 5.7。
wangxl
2018-07-27
1.2K0
PHP的错误机制总结
PHP的错误机制也是非常复杂的,做了几年php,也没有仔细总结过,现在就补上这一课。
wangxl
2018-07-27
1.3K0
Git使用教程
1;开发不同功能需创建不同分支,如果涉及到多人开发,需提交到远程仓库一起在新的分支中开发。
wangxl
2018-07-27
4710
开始使用PHPUnit
想试一下单元测试很久了,但是一直没有合适的项目,而且中文网络上的PHPUnit教程要么太旧,要么太乱,所以总也没学会。最近准备把手头的项目重构一下,决定开始使用PHPUnit做单元测试,先照着PHPUnit的官网做了一下Tutorial,虽然已经很简单了,仍然被卡住几次,所以写篇文章记录一下。因为对PHP的包管理系统不熟悉,这篇文章会从安装开始。
wangxl
2018-07-27
1.3K0
Redis保存PHP Session方法
Redis保存session用的命令是setex,用redis-cli monitor实时监测可以检测到。
wangxl
2018-07-27
5.5K1
Session原理简述
Session存在的意义,估计每个用做web开发的人都是了解的,就为了解决HTTP是个无状态协议所带来的问题,不多说了。这里主要想说的是服务端与客户端是如何利用session进行交互的。
wangxl
2018-07-27
6100
从运行原理及使用场景看Apache和Nginx
用正确的工具,做正确的事情。 本文只作为了解Apache和Nginx知识的一个梳理,想详细了解的请阅读文末参考链接中的博文。 Web服务器 Web服务器也称为WWW(WORLD WIDE WEB)服务
wangxl
2018-03-09
1.9K0
为什么in_array(0, ['a', 'b', 'c'])返回true
在PHP中,数据会自动转换类型后再进行比较。 这样可能会导致一些费解的现象: in_array(0, ['a', 'b', 'c']) // 返回bool(true),也就相当于数组中有0 array_search(0, ['a', 'b', 'c']) // 返回int(0),也就是第一个值的下标 0 == 'abc' // 返回bool(true),也就相当于相等 这两个表达式都返回true。 直观上看,0没有在数组['a', 'b', 'c']中,也不会等于abc这个字符串。 那怎么会返回tr
wangxl
2018-03-09
1.9K0
Session原理简述
Session存在的意义,估计每个做web开发的人都是了解的,就为了解决HTTP是无状态协议所带来的问题,不多说了。这里主要想说的是服务端与客户端是如何利用session进行交互的。 工作流程 先看下
wangxl
2018-03-09
1.2K0
PHP的PSR系列规范都有啥内容
PSR 是PHP Standard Recommendation的简写,它其实应该叫PSRs,即系列推荐标准:目前通过的规范有PSR-0(Autoloading Standard)、PSR-1(Basic Coding Standard)、PSR-2(Coding Style Guide)、PSR-3(Logger Interface)、PSR-4(Improved Autoloading)。它不是PHP官方标准,而是从如Zend、Symfony2等知名PHP项目中提炼出来的一系列标准,目前有越来有
wangxl
2018-03-08
9360
php引用符号详解 (基础回顾)
在PHP 中引用的意思是:不同的名字访问同一个变量内容. <?php $a = "date"; $b = &$a; echo $a; // date echo $b; // date $b = "da
wangxl
2018-03-08
1.7K0
如何学好数据结构和算法
数据结构和算法是计算机科学中最重要的课程,作为一名Google的软件工程师,我经常看到一些求职者或刚毕业的学生,他们对于数据结构和算法的学习是远远不够的。这不是说他们看的书是有问题的,或教授们教错了内容,而是学生对这个课程的理解是不到位的。 扎实掌握数据结构和算法的关键并不是要对每一种数据结构和它的子形式都做详尽的调查,然后记住它们的时间复杂度和空间复杂度。记住这些看起来很棒,也很吸 引人,但说实话,你在实际中很少会用到它们。不管怎样,在你的职业生涯中都不会让你实现一个红黑树结点删除的算
wangxl
2018-03-08
8550
PHP中的防御性编程
菲纳格动态逆定律: 会出错的,终将会出错 —- 在最糟糕的时刻。 防御性编程是什么意思 防御性编程,简单的说,就是在编程的时候有目的地预测可能的故障点。目的是在那些可能发生的问题发生前解决它们。你看见了问题,对吧?预测意料之外的事情本来就有内在的难度,当你想要预测意料之外的事情并且解决它就更是难上了好几倍。 下面我们看几个实际的例子。 条件语句 这是最容易进行防御性编程的地方之一,也是最容易满足的地方。在用PHP编程的许多情况下你不会需要“else”。 假设,你在写一个函数并且需要一个条件语句。在这里,你
wangxl
2018-03-08
7440
点击加载更多
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档