目录
一、基于PHP实现的webshell攻击
二、不用或少用else语句
三、单页面结构(Single-page application)
四、让搜索引擎抓取ajax的内容
五、CURL_MULTI_INIT()
六、PHP strstr()函数
七、论规范化的重要性
八、HHVM
九、PHP源码签名收集器
十、协同过滤推荐算法
首页 后端开发 php教程 PHP的一些知识点研究(一)

PHP的一些知识点研究(一)

Jun 23, 2016 pm 01:41 PM

一、基于PHP实现的webshell攻击

在乌云上看到一个基于php的webshell攻击。

高度隐蔽的webshell,使用普通的php代码将真正的shell内容经过层层加密处理之后保存到图片当中,只留下一个url,并且url还是经过加密处理的,所以对外看没有任何特征可寻,使其很难被发现,当打开上述url时,,显示的是404,而这个404页面就是伪装为404的木马,只是把标题改为了404 Not Found。

二、不用或少用else语句

对于if else 有人追求结构的完整,有if必有else,这看起来或许是不错,不过有时会带来代码的繁琐,而且可能会导致逻辑的混乱;可以以一种结果为基准,当发生其他情况时做if判断;即默认A,有异常则为B;如下面右图所示:

 

三、单页面结构(Single-page application)

单页面就是一切操作和布局都是在一个页面下进行,不需要页面跳转,根据不同的用户请求加载不同的内容。

优点:页面结构简单,数据量小,节省带宽,响应快,体验好,易于开发、维护以及优化;

缺点:使用ajax技术,导致不利于seo。

四、让搜索引擎抓取ajax的内容

主要针对上一案例的单页面结构,程序通过#结构url控制页面内容,但不会被搜索引擎抓取。

方法一:twitter使用"井号+感叹号"的结构,但体验不好而且繁琐;

方法二:使用History API;在不刷新页面的情况下,改变浏览器地址栏显示的地址。步骤如下:

A、用History API替代井号结构,让每个#号都变成正常路径的URL,这样搜索引擎就会抓取每一个网页。

B、定义一个JavaScript函数,处理Ajax部分,根据网址抓取内容。

C、定义鼠标的click事件,使用History对象的popstate事件处理浏览器的"前进 / 后退"按钮。

D、设置服务器端。

五、CURL_MULTI_INIT()

以前一直使用curl_init(),最近看到有curl_multi_init();本以为会带来更高效的代码,看了下curl_multi的步骤,感觉相当繁琐,而且curl_multi可能会造成cpu过高、网页假死等现象;同时对比了curl_init和curl_multi_init,多线程在速度上不一定优于单线程,多线程只是能在同时处理多任务,时间成本不一定低。附上curl_multi的使用步骤:

第一步:调用curl_multi_init;

第二步:循环调用curl_multi_add_handle;

这一步需要注意的是,curl_multi_add_handle的第二个参数是由curl_init而来的子handle;

第三步:持续调用curl_multi_exec;

第四步:根据需要循环调用curl_multi_getcontent获取结果;

第五步:调用curl_multi_remove_handle,并为每个字handle调用curl_close;

第六步:调用curl_multi_close。

六、PHP strstr()函数

strstr(string,search)搜索一个字符串在另一个字符串中的第一次出现。返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。


search 必需。规定所搜索的字符串。如果该参数是数字,则搜索匹配数字 ASCII 值的字符。

参考:http://www.w3cschool.cn/func_string_strstr.html。所以,在给第二个参数时,如果需要匹配数字,建议加上引号。

七、论规范化的重要性

家附近的一条久治不下的道路,通过划分出人行通道、非机动车道、机动车道,使得问题一下子等到了解决。有时候灵活导致选择过多,问题也会很多;程序亦如此,用户输入的灵活看起来很不错,其实在后台处理时是需要更多的成本,何不在前期就进行规范化,bug止于源头,而不是亡羊补牢。规范化使一切流程变得简单高效。

八、HHVM

HHVM (HipHop Virtual Machine)会将PHP代码转换成高级别的字节码(通常称为中间语言)。然后在运行时通过即时(JIT)编译器将这些字节码转换为x64的机器码。

从各项数据表明,和Zend相比,HHVM变得更高效,CPU负载降低,平均页面加载时间也缩短。HHVM的存在是为了优化PHP运行性能,和php5相比,确实存在一些优势,还是坐等php7吧。

九、PHP源码签名收集器

当学习新的、不熟悉的源码时,对代码结构获取直观的感受是很重要的。可以通过从每个源文件中逐行获取标点进行总结,即文件签名。这可以帮助考量代码的复杂度。其实也就是提取代码文件中固定的符号呈现文件的结构。

参考:http://c2.com/doc/SignatureSurvey/

十、协同过滤推荐算法

1、基于内容的推荐算法的前提假设是:如果用户喜欢物品a,那么用户也应该会喜欢与a类似的物品。基本思想是拆分内容属性,提取相同属性的内容进行推荐。

2、协同过滤推荐算法的前提假设是:如果用户a与用户b均对一系列相同的物品表示喜欢,那么a极有可能也喜欢b用户喜欢的其他物品。基本过程是用户首先为每个item进行评价打分,通过计算不同用户评分之间的相似程度,可以找到最近邻居,根据最近邻居的评价,产生推荐。

上述算法都是运用了矩阵建模,使用到余弦相似度、皮尔逊相似度等公式。使用中可将二者合二为一推荐。


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

在PHP API中说明JSON Web令牌(JWT)及其用例。 在PHP API中说明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

描述扎实的原则及其如何应用于PHP的开发。 描述扎实的原则及其如何应用于PHP的开发。 Apr 03, 2025 am 12:04 AM

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

如何在系统重启后自动设置unixsocket的权限? 如何在系统重启后自动设置unixsocket的权限? Mar 31, 2025 pm 11:54 PM

如何在系统重启后自动设置unixsocket的权限每次系统重启后,我们都需要执行以下命令来修改unixsocket的权限:sudo...

解释PHP中晚期静态结合的概念。 解释PHP中晚期静态结合的概念。 Mar 21, 2025 pm 01:33 PM

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

如何用PHP的cURL库发送包含JSON数据的POST请求? 如何用PHP的cURL库发送包含JSON数据的POST请求? Apr 01, 2025 pm 03:12 PM

使用PHP的cURL库发送JSON数据在PHP开发中,经常需要与外部API进行交互,其中一种常见的方式是使用cURL库发送POST�...

框架安全功能:防止漏洞。 框架安全功能:防止漏洞。 Mar 28, 2025 pm 05:11 PM

文章讨论了框架中的基本安全功能,以防止漏洞,包括输入验证,身份验证和常规更新。

在PHPStorm中如何进行CLI模式的调试? 在PHPStorm中如何进行CLI模式的调试? Apr 01, 2025 pm 02:57 PM

在PHPStorm中如何进行CLI模式的调试?在使用PHPStorm进行开发时,有时我们需要在命令行界面(CLI)模式下调试PHP�...

See all articles