首页 开发编程 正文

怎么写php扩展(php语言网站如何加强安全性)

Suhosin提供了增强之PHP之安全配置。这低廉之价格导致用PHP写之网站应用程序越来越多之同时也越来越多之展现出PHP本身在安全上之脆弱,容易受到SQL注入、跨站脚本、任意执行指令等等之攻击。PHP增强计划创建之PHP更具有安全性,这些是由增强之PHP补丁完成之,这是一个PHP之独立使用模块。开发人员不希望为了达到安全性而总去维护...

php语言网站如何加强安全性?

PHP是一种非常流行之网站脚本语言,但是它本身所固有之安全性是非常薄弱。本文讲述了PHP增强计划(Hardened-PHP project)和新之Suhosi计划,Suhosin提供了增强之PHP之安全配置。

PHP是带有争论地但又是最流行之一种网站脚本语言。它之所以流行,是因为它低廉之价格,然而,这低廉之价格导致用PHP写之网站应用程序越来越多 之同时也越来越多之展现出PHP本身在安全上之脆弱,这种安全特性显示出PHP是极不可靠,不过同时对这个脚本语言本身而言它又是非常灵活之,使用它就能 很容易之实现代码,不过这些代码都是臃肿之且不安全之,虽然是这样它还是一直都拥有很多之使用者。你可以根据实际情况来假设,一次又一次,各种应用软件都 体现了这种脆弱性:容易受到SQL注入、跨站脚本、任意执行指令等等之攻击。

因为象safe_mode和open_basedir这样内置之PHP安全措施将被忽略,PHP增强计划创建之PHP更具有安全性,同时也对PHP 进行校验检查。最初,这些是由增强之PHP补丁完成之,这些补丁需要修补并重新编译PHP自身。最近,PHP增强计划发布了一个名为Suhosin之新工 程。

Sohosin包括有两部分:第一部分是PHP之补丁,这个补丁强化了Zend引擎自身,以免可能产生缓冲溢出,也可以防止相关之弱点。第二部分是 Suhosin之扩展,这是一个PHP之独立使用模块。这两部分可以一起工作,或者是扩展部分单独工作。

开发人员不希望为了达到安全性而总去维护他们自己之PHP安装设置和他们当然更喜欢直接使用销售商提供之Linux分布系统上PHP,使用扩展模块 能提供更多PHP本身所不能具有之安全特点。

扩展模块很容易安装;它也能通过PECL安装,或者是下载后通过编译安装:

$ tar xvzf suhosin-0.9.17

$ cd suhosin-0.9.17

$ phpize

$ ./configure

$ make

$ sudo make install

为了使用suhosin,还需要增加/etc/php.ini,如下所示:

extension=suhosin.so

对于大部分人来说默认之配置选项已经足够了。为了加强设置,可以在/etc/php.ini中增加相应之值。网站中详细地介绍了有关之各种配置选 项,这些说明可以帮助你进行初始化配置。

使用Suhosin,你可以得到一些错误日志,你能把这些日志放到系统日志中,也可以同时写到其他任意之日志文件中去;它还可以为每一个虚拟主机创 建黑名单和白名单;可以过滤GET和POST请求、文件上载和cookie。你还能传送加密之会话和cookie,可以设置不能传送之存储上线等等。它不 像原始之PHP强化补丁,Suhosin是可以被像Zend Optimizer这样之第三方扩展软件所兼容之。

下面是我写的一个操作方法:

wget -c http://soft.vpser.net/web/suhosin/suhosin-patch-5.2.10-0.9.7.patch.gz

gzip -d ./suhosin-patch-5.2.10-0.9.7.patch.gz

cd php-5.2.10

patch -p 1 -i ../suhosin-patch-5.2.10-0.9.7.patch

编译的时候

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-discard-path --enable-magic-quotes --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --with-mime-magic --enable-suhosin

把suhosin编译进去就好了

PHP的异步并行网络扩展swoole如何使用?

1、node.js 没有内置对多线程/多进程的支持,用户必须使用 cluster/child_process 等扩展自行实现并行。swoole 内置对多线程/多进程的支持,用户仅需配置参数即可。

Swoole 是一个 PHP 扩展框架,不是一门语言,为什么要比较一个框架和另一门裸语言运行环境,还不许别人用扩展?

Node.js 对应和比较的对象,应该是Apache 或 fast-CGI。

2、node.js 仅支持异步。swoole 同时支持同步/异步 2 种模式。

更何况 async/await 语法出现后,这再也不是一个问题了,你可以以同步的模式来书写异步程序。

3、node.js 没有内置通用协议处理的支持,需要自行实现代码。swoole 内置了通用协议处理的支持,可以借助 swoole 提供的功能轻松实现。

是,自行实现,但是只需要几行代码而已。而获得的好处是,精确而透明地控制每个细节,比如根据 head 中的身份验证,决定是否接收 POST 请求剩余的 body 部分。

4 、swoole 内置了对 TCP 心跳检测的支持。node 无。5、swoole 2.x 内置协程。node 无。

Node.js 支持 PHP 不支持的东西多了,怎么不提。随便说一个,PHP 里对象属性名不能是空字符串(我记得会自动变成类似 empty 的字符串属性名),parse 时差点晕倒。用关联数组,又无法区分进行 stringify 了。

哪怕二者一模一样,也没有道理要求其中一个消失吧……

更何况 JS 的语法比 PHP 方便太多了,我是 PHP 入服务器编程的坑的,很多年后终于忍无可忍,Node.js 诞生时简直像看到了曙光。

但是,哪怕 PHP 一塌糊涂,这也不是反过头来黑 PHP 的理由。PHP 在我们最困难的时候帮助过我们,他是我们的老朋友。现在他老了,若是有空了,打开以前的代码,回去看看他。

c扩展怎么用?

1:预定义 在home目录,也可以其他任意目录,写一个文件,例如caleng_module.def 内容是你希望定义的函数名以及参数: int a(int x,int y) string b(string str,int n) 2:到php源码目录的ext目录 #cd /usr/local/php-5.4.0/ext/ 执行命令,生成对应扩展目录 #./ext_skel --extname=caleng_module --proto=/home/hm/caleng_module.def 3:修改config.m4

win10 docker安装的php redis扩展怎么卸载?

1、列出已经安装的docker相关软件yum list installed | grep docker

2、删掉docker 相关软件sudo yum -y remove docker-ce.x86_64

3、删除镜像文件,容器等rm -rf /var/lib/docker

4、删除配置文件等rm -rf /etc/docker

5、通过脚本移除旧的版本sudo yum remove docker \

docker-client \

docker-client-latest \

docker-common \

docker-latest \

docker-latest-logrotate \

docker-logrotate \

docker-selinux \

docker-engine-selinux \

docker-engine

深入研究PHP源码实现,以达到编写PHP扩展与改写原有扩展的深度,应当从哪里入手?

PHP是居于c语言开发的,要深入研究PHP的源码实现,首先要熟悉c语言,并且在c/c++上做了很多的项目,不然阅读PHP的源码会非常的困难。

如果不熟悉c语言,建议你先从基础入手,例如阅读《c和指针》,然后配合做一些c语言的项目,使得变成c开发的熟练的程序员。

其实开发PHP扩展未必要深入研究PHP源码的实现,熟悉c语言之后,找几个简单的扩展阅读一下,知道扩展开发的流程和框架,知道ext_skel工具,知道php-dev包等等,例如阅读《extending and embedding php》也可以获得一些帮助。

通常需要开发扩展的情况是:

1. 应用非常注重于效率

2. php很难实现的一些系统调用

3. 需要源码保密

根据自己实际需求,由简到难,多实践肯定可以写出较好的扩展来。

本文转载自互联网,如有侵权,联系删除