资讯专栏INFORMATION COLUMN

起步-学习php扩展开发的背景

joyqi / 1443人阅读

摘要:开发扩展是用语言实现的,流行的很大一个原因也是因为有大量开发者通过扩展实现大量通用的功能供广大社区开发者使用。扩展化的优势产品安全性和私密性好系统性能高扩展化的劣势开发效率低的优势之一就是开发效率高,需要选择系统合适的模块进行扩展化。

php是解释性语言,不需要编译。对于用php写的产品,如果需要直接源码安装到客户的运行环境中,则存在很大的安全隐患。客户甚至可以把你的产品直接做二次部署或者销售。目前我们公司就遇到这个问题。

1. 利用zend guard
Zend Guard不仅可以实现对PHP应用的脚本进行加密保护和对PHP应用的产品进行商业许可证管理,还可以为许多软件生产商、IT服务提供商提供完善的加密和安全的产品发布系统。(摘自百度百科)
虽然zend guard 能增加一定的安全性,但是网上zend guard解码工具一大堆,zend guard只能做最基本的防护。

2.开发php扩展
php是用C语言实现的,php流行的很大一个原因也是因为有大量开发者通过扩展实现大量通用的功能供广大社区开发者使用。php扩展开发的意义和好处,鸟哥也在其博客中有过阐述:用C/C++扩展你的PHP
3、公司产品的分析

进行php扩展开发,首先需要有不错的C/C++基础,同时也需要熟悉php扩展API。有一定的技术门槛,同样对于一个以php为主要技术栈的初创性公司来说,需要考虑技术和时间成本。

php扩展化的优势:

产品安全性和私密性好

系统性能高

php扩展化的劣势:

开发效率低 php的优势之一就是开发效率高,需要选择系统合适的模块进行扩展化。

维护成本高 越多的模块扩展化,则要求团队中需要更多的人即熟悉C 又懂php,人力成本也将增大,同时,因为扩展需要编译,调试和bug修复的成本也将增大。

通过讨论和分析我们目前产品的情况,如图所示:


思路:
我们首要目标是保证产品系统的隐私性,即我们会在扩展中对用户的一些信息和权限进行校验。同时,为了保证用户不能绕过我们的校验,则需要扩展中的功能是系统必须的,用户如果需要重写,需要很大的成本。

a、起初,讨论过程中,大家的意见都是建议尽量少的代码改动,把入口进行扩展化。但是我们目前系统是基于yii开发的,如果更改yii框架中的入口内容,这样做无法解决问题:1、对于熟悉yii框架的开发人员来说,他可以轻易绕过你的扩展内容。2、不利用后续yii框架的升级。
b、第二种方案配置文件扩展化,第一反应,把配置文件放在扩展中,如果去掉扩展,系统就无法正常运行。但是,仔细思考后,就发现,无论配置信息本地加密,还是通过扩展远程获取,最终通过调试,都能在程序中获得配置的具体信息,这样就能直接绕过我们的扩展,即我们的校验就无效了。

c、最后我们决定,将基础服务部分的内容进行扩展化。这样既能不影响容易变更的业务逻辑的开发效率,同时也增加了系统的隐私性和基础服务的效率。扩展化的服务越多,用户需要破解和覆盖的功能越多,用户的开发成本就越大。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22622.html

相关文章

  • PHP扩展开发系列02 - 老司机起步之函数

    摘要:上一篇扩展开发引导文章中。这篇文章就开始介绍使用工具来生成扩展项目文件注意这里的本身没有这玩意,是我给自带的起的别名这个工具就是还有点迷惑那不废话了。至于其他参数自行了解。发现也是有这三个文件的。所以,不要质疑自己。 上一篇扩展开发引导文章中。创建了编写扩展的三个基本文件。或许你会有个疑问PHP没有类似的自动生成项目框架的工具吗? 当然有。这篇文章就开始介绍使用 php-ext-cli...

    cloud 评论0 收藏0
  • 《 Kotlin + Spring Boot : 下一代 Java 服务端开发

    摘要:下一代服务端开发下一代服务端开发第部门快速开始第章快速开始环境准备,,快速上手实现一个第章企业级服务开发从到语言的缺点发展历程的缺点为什么是产生的背景解决了哪些问题为什么是的发展历程容器的配置地狱是什么从到下一代企业级服务开发在移动开发领域 《 Kotlin + Spring Boot : 下一代 Java 服务端开发 》 Kotlin + Spring Boot : 下一代 Java...

    springDevBird 评论0 收藏0
  • PHP学习 Day 0 起步

    摘要:记录一下学习的轨迹。起步推荐用最新的。内建服务器这年头大部分语言都支持这一出了。交互式的环境学习方便,推荐下家的是用写的。结尾可以省略,然后可以简写成,于是上面的可以简写成当然像这种一行的,用也成练习题感谢出题搭好环境,写出第一个。 记录一下学习的轨迹。 入门资料 对我而言好的入门资料要符合两个要求: 能够切实帮助以比较正的方式入门 薄 真没找到什么好的入门资料。没有《Di...

    Cruise_Chan 评论0 收藏0
  • 如何基于 PHP-X 快速开发一个 PHP 扩展

    摘要:这里看到,表明你的扩展已经加载成功了,现在就可以调用这个扩展函数了。是不是很简单更多上面的例子还比较简单,只是编写了一个扩展函数。 PHP-X是我在2017年年初创建的一个新项目。这个项目的目标就是让有一定工作经验的PHP程序都能够具备扩展开发的能力。 0x00 初衷 从2012年开始编写swoole,现在算来已经有5个年头了。我发现编写一个 PHP 扩展这个工作非常艰难。PHP 程序...

    callmewhy 评论0 收藏0
  • 【翻译】Next.js背后哲学和设计

    摘要:无数的模板语言和框架应运而生但是技术始终被分割为前端和后端。这意味着一个页面可以有很多的这并不会对其余的页面有任何影响。提前绑定和编译预测是一个非常有效的部署方式。最后,这是我们对于这个特定问题的贡献。 Next.js 原文地址 Naoyuki Kanezawa (@nkzawa), Guillermo Rauch (@rauchg) 和 Tony Kovanen (@tonykova...

    plokmju88 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<