首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP:40+开发工具推荐

它提供了一个良好的文档记录和易于使用的类的集合,可以使用和扩展构建本地PHP扩展。 Twig Twig是一个快速、安全和稳定的PHP模板引擎。...A###PHP Documentor PHP Documentor能读取代码的结构,文件系统结构、类、函数和介于两者之间的,并生成文档。...它仿照Ruby on Rails的概念,在MIT许可下发布的。 CodeIgniter CodeIgniter是一个强大的、开源的PHP框架。...它能检查代码中的潜在问题,包括可能的错误,次优的代码,未使用的参数,等等。 Kohana Kohana一个基于PHP5的优雅的、开源和面向对象HMVC框架,由一群志愿者维护和开发。...它利用FunctionParser分解传递到沙箱的调用,这样,即使没有转换成字符串,PHP调用也可以在沙箱中运行。

3.6K70

PHP开发者必备的50个库框架【2019】

GitHub Stars: 17.8k+ 网址:https://github.com/symfony/symfony 3、CodeIgniter CodeIgniter 是一个Web应用开发框架,它的目标是让开发者可以使用其提供的功能丰富的库来实现项目的快速开发...GitHub Stars: 7.5k+ 网址:https://github.com/cakephp/cakephp 14、whoops Whoops是一个PHP的错误处理框架,开箱即用。...GitHub Stars: 5k+ 网址:https://github.com/google/google-api-php-client 29、Twig Twig是一个灵活、高速安全的模板语言。...GitHub Stars: 5k+ 网址:https://github.com/twigphp/Twig 30、 PHP-PM PHP-PM是一个用于PHP应用的进程管理器和负载均衡器。...GitHub Stars: 4k+ 网址:https://github.com/typecho/typecho 36、Lychee Lychee是一个美观易用的照片管理系统,你可以部署在自己的服务器上,

5.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    CVE-2021-39165: 从一个Laravel SQL注入漏洞开始的Bug Bounty之旅

    那么,再回看where函数的参数列表: public function where($column, $operator = null, $value = null, $boolean = 'and')...在Twig v1.41、v2.10和v3后,增加了map和filter这两个filter,可以直接用来执行任意函数: {{["id"]|filter("system")|join(",")}} {{["...Twig_Environment类的registerUndefinedFilterCallback和getFilter就用来注册和执行回调函数,通过这两次调用,即可构造一个任意命令执行的利用链。...rcrowe/twigbridge用于在Laravel和Twig之间建立一个桥梁,让Laravel框架可以直接使用twig模板引擎。...我很快我找到了一对合适的回调\Symfony\Component\VarDumper\VarDumper,我们可以先调用setHandler将$handler设置成任意函数,再调用dump来执行: class

    1K20

    探索Twig:优雅、灵活的PHP模板引擎

    你可以通过创建一个 Twig 实例,并调用其 setLoader 和 setCache 方法来配置 Twig:在 Twig 中定义可重复使用的代码块的方式,类似于函数或方法。宏可以带有参数,并且可以在模板中多次调用。...'https://example.com', 'Example') }}4.3 自定义函数和过滤器Twig 允许你在模板中注册自定义的函数和过滤器,以便在模板中执行自定义的逻辑和操作。...Twig 还支持自定义函数和过滤器,可以在模板中执行自定义的逻辑和操作。你还可以通过引入子模板的方式来实现模板的复用和组合,使得模板的编写更加高效和灵活。...问题3:模板编译错误在模板中可能会出现语法错误或者逻辑错误,导致模板无法正确编译。解决方法: 仔细检查模板文件中的语法和逻辑,查找并修复错误。

    45600

    XDCTF2015代码审计全解

    (在前台可以找到这个地址) 遍观代码可见是一个基于Codeigniter框架的cms,模板库使用的是twig,数据库使用mysql,session使用文件。 多的不说,直接说我留的漏洞。...看到获取GET变量的I函数。I函数的原型是ThinkPHP中的I函数,熟悉ThinkPHP的人应该知道,I函数默认是会调用trim进行处理的。 查看源码得知,Xdsec-cms中的I函数也会一样处理。...其实依旧是找漏洞,我在hint里也说明了。 这一步需要深入Codeigniter核心框架。...主体函数 其中,hook是脚本钩子,等于可以在执行的中途加入其它代码。...remap方法我将其伪装成修改方法名的hook函数,实际上我在其中加入了一个before_handler方法,如果控制器实现了它,将会调用之。

    1.6K10

    PHP代码审计Day2 - filter_var函数缺陷

    在文章的最后,我们还会留一道CTF题目,供大家练习,希望大家喜欢。下面是 第2篇代码审计文章: Day 2 - Twig 题目叫做Twig,代码如下: ?...漏洞解析 : 这一关题目实际上用的是PHP的一个模板引擎 Twig ,本题考察XSS(跨站脚本攻击)漏洞。...在上图 第8行 中,程序使用 Twig 模板引擎定义的 escape 过滤器来过滤link,而实际上这里的 escape 过滤器,是用PHP内置函数 htmlspecialchars 来实现的,具体可以点击...实际上,这里的 // 在JavaScript中表示单行注释,所以后面的内容均为注释,那为什么会执行 alert 函数呢?...根据上面的分析,当我们访问这个并不存在的链接时,程序会调用404模板页面,然后调用 current_url 函数来获取当前用户访问的文件名,也就是最后一个 / 符号后面的内容,所以最终payload里的

    1.4K20

    讲解-启动流程

    来自CodeIgniter中国的介绍 CodeIgniter 是一个轻量级、快速、灵活和安全的PHP全栈Web框架。...CodeIgniter4 是一个完整的重写,将质量和代码带入一个更现代的版本,同时仍然保持着许多完整的东西来自CodeIgniter4 Github的介绍 CodeIgniter4 启动流程分析...个人阅读笔记,仅作参考,若有错误后续改正 简要说明 入口文件index.php进行一些初始化动作 调用框架引导文件System\bootstrap.php预定义常量及加载相关类库,然后对CodeIgniter...\CodeIgniter进行初始化并返回 调用CodeIgniter\CodeIgniter->run()执行主流程并返回响应结果 入口文件 - public\index.php 检测 PHP...System\bootstrap.php预定义常量及加载相关类库,然后对CodeIgniter\CodeIgniter进行初始化并返回 调用CodeIgniter\CodeIgniter->run()执行主流程并返回响应结果

    2.5K10

    代码审计Day2 - filter_var函数缺陷

    下面是 第2篇 代码审计文章: Day 2 - Twig 题目叫做Twig,代码如下: 漏洞解析 : 这一关题目实际上用的是PHP的一个模板引擎 Twig ,本题考察XSS(跨站脚本攻击)漏洞。...在上图 第8行 中,程序使用 Twig 模板引擎定义的 escape 过滤器来过滤link,而实际上这里的 escape 过滤器,是用PHP内置函数 htmlspecialchars 来实现的,具体可以点击...url=javascript://comment%250aalert(1) ,可以执行 alert 函数: 实际上,这里的 // 在JavaScript中表示单行注释,所以后面的内容均为注释,那为什么会执行...在 system\uri.php 文件中,我们发现这里调用了 static::detect 方法( statci:: 是在PHP5.3版本之后引入的延迟静态绑定写法)。...根据上面的分析,当我们访问这个并不存在的链接时,程序会调用404模板页面,然后调用 current_url 函数来获取当前用户访问的文件名,也就是最后一个 / 符号后面的内容,所以最终payload里的

    1.1K00

    PHP SECURITY CALENDAR Writeup

    回溯一下,在构造函数中可看到,this->file 来自 $_FILES['solution'] 。...__callStatic() //在静态上下文中调用不可访问的方法时触发 __get() //用于从不可访问的属性读取数据 __set() //用于将数据写入不可访问的属性 __isset(...) //在不可访问的属性上调用isset()或empty()触发 __unset() //在不可访问的属性上使用unset()时触发 __toString() //把类当作字符串使用时触发 _..._invoke() //当脚本尝试将对象调用为函数时触发 payload 将对象放到数组里 函数可以用你自己定义的方式来处理运行中的错误, 例如,在应用程序中严重错误发生时,或者在特定条件下触发了一个错误(使用 trigger_error()),你需要对数据/文件做清理回收。

    2.1K40

    痛心的CodeIgniter4.x反序列化POP链挖掘报告

    ,如果我们想要代码继续往下执行,我们这里只能将 因为在1206行有调用BaseConnection的table成员方法,我们在 /system/Database/BaseConnection.php中查找一下...实例化CodeIgniter\Database\Query类并调用它下面的getQuery()方法。 在system/Database/query.php找到该类,如图: ?...0x02 通过CI定义的函数触发反序列化 在我们之前分析POP链时,我们使用了unserialize函数来进行演示,那么在CI框架中是否存在unserialize使用不当的问题呢?答案是肯定的。...那么我们看一下old函数第768行与770行的逻辑。...而ThinkPHP3.2.3可以运行在PHP5与PHP7版本,ThinkPHP3.2.3的反序列化链路只能运行在PHP5.x上,放在PHP7.x会报错。

    4.9K20

    AS3与PHP通信

    目前flash在各方个面的应用越来越广,而flash也不单只是注重自身绚丽的效果,也需要和外界程序交换数据,以实现更强大的功能,随着as3的到来,flash和外部交互的方式也越来越简便和合理化。...//事件相应函数 7. function loaded(e:Event){ 8. trace(loader.data); 9. // output : this data is from php!...是的,信息并没有传输到php,你还是在用loadVars的方式试图传送数据,但as3里已经不是这样了, URLLoader的data只有在数据被下载完时才会被初始化,在数据没有加载完成时,它是等于null...URLVariables允许你在flash和后台程序间传输变量, as3里已经把发送和接受数据分离,再也不像as2的loadVars那样,一个类通吃所有了,那么这个URLVariables如何送要发送的数据呢...> 以上这些就是as3里和后台交互的基础内容,现在你可以在as3里创建这样的交互,获取动态数据来丰富你的程序,在你开始自己动手实验之前,还有一些东西值得注意: 1,记得捕获和处理异常(上述的例子里都是假定在完美的测试环境下运行

    92830

    讲解-加载静态页

    讲解 本教程旨在向您介绍CodeIgniter框架和MVC体系结构的基本原理。它将向您展示如何以逐步的方式构造基本的CodeIgniter应用程序。 在本教程中,您将创建一个基本的新闻应用程序。...如果不存在,会显示 "404 Page not found" 的错误页面。 此事例方法中,第一行用以检查界面是否存在,file_exists() 是原生的 PHP 函数,用于检查某个文件是否存在。...PageNotFoundException 是 CodeIgniter 的内置函数,用来展示默认的错误页面。...使用自定义的路由规则,你可以将任意的 URL 映射到任意的控制器和方法上,从而打破默认的规则: http://example.com/[controller-class]/[controller-method...每个规则都是一个正则表达式(左侧)映射到一个控制器和方法(右侧)。当获取到请求时,CodeIgniter 首先查找能匹配到的第一条规则,然后调用相应的可能存在参数的控制器和方法。

    3.6K10

    PHP代码审计02之filter_var()函数缺陷

    > 这一关用的是PHP的一个模板引擎Twig,考察的是XSS漏洞,也就是跨站脚本攻击。虽然程序使用了escape和filter_var()两个过滤方法,但是。还是可以被绕过的。...这个函数过滤其他的参数设置说明,如下: FILTER_CALLBACK:调用用户自定义函数来过滤数据。 FILTER_SANITIZE_STRING:去除标签,去除或编码特殊字符。...发现这里调用了static::detect()方法,( static:: 是在PHP5.3版本之后引入的延迟静态绑定写法) detect()方法就在下方,具体代码如下图: ?...404模板页面,然后调用current_url()函数来获取当前文件名,也就是咱们构造的alert("XSS"),嵌入了进去,找成XSS攻击。...小结 通过上面的分析,是不是对filter_var()函数理解更深了呢?下一篇文章会对实例化任意对象漏洞进行学习和分析,一起努力吧!

    2.4K42

    概述-服务

    Introduction CodeIgniter中的所有类均作为“服务”提供。这仅意味着,要对要调用的类进行硬定义,而不是对要加载的类名称进行硬编码,而是在一个非常简单的配置文件中定义它们。...然后,我们将用调用此新类的代码替换计时器创建代码: $timer = \Config\Services::timer(); 当需要更改所使用的实现时,可以修改服务配置文件,并且更改无需更改即可自动在整个应用程序中进行...非常简单且抗错误。 注解 建议仅在控制器内创建服务。其他文件,例如模型和库,应将依赖项传递到构造函数中或通过setter方法传递。 方便的功能 提供了两种功能来获得服务。这些功能始终可用。...这与Services文件中的方法名称始终返回该类的SHARED实例相同,因此多次调用该函数应始终返回同一实例: $logger = service('logger'); 如果创建方法需要其他参数,则可以在服务名称之后传递它们...默认情况下,我们希望此类能够在中找到视图APPPATH.views/。但是,如果开发人员需要,我们希望开发人员可以选择更改该路径。因此,该类接受$viewPath 作为构造函数参数。

    1.7K10
    领券