月度归档: 2017 年 6 月

  • 禁止WordPress程序REST API功能且移除wp-json链接

    禁止WordPress程序REST API功能且移除wp-json链接

    毋庸置疑WordPress算是当前比较好用的PHP程序,基本上个人博客、企业网站,小型商务网站都可以使用到。而且WordPress官方的更新、第三方的插件主题丰富,让这个程序变得越来越丰富多样,但是随着不断的升级功能,也会增加程序的负担和不安全因素。

    比如从WordPress4.4开始增加REST API功能, 对于一般的网站是没有需要的,反而会拖累网站的速度,所以我们尽可能的禁止掉这些不必要的功能需求。我们在源代码中可以看到类似的链接字符。

    <link rel=’https://api.w.org/’ href=’http://www.uziwp.com/wp-json/’ />

    这里老季将记录下如何解决这个问题的过程,一来需要移除掉这个链接,二来需要禁止REST API功能。

    第一、非插件方式

    将脚本丢到当前主题的functions.php文件中。但是,我们会发现链接是去掉了,但是打开wp-josn还是可以看到输出字符。然后老季再启用到一个插件才可以解决。

    此外,对于 WP 4.7 以上版本,还有种通过rest_api_init这个钩子来禁用 REST API 的方法

    // 屏蔽 REST API
    if (version_compare(get_bloginfo('version'), '4.7', '>=')) {
      add_filter('rest_authentication_errors', function(){
        add_filter('rest_authentication_errors', function ($result) {
             
          if (true === $result || is_wp_error($result)) {
            return $result;
               }
    
               if (!is_user_logged_in()) {
                   return new WP_Error('rest_cannot_access', __('没有权限'), array('status' => 403));
               }
    
                return $result;
        });
        });
    } else {
        // Filters for WP-API version 1.x
        add_filter('json_enabled', '__return_false');
        add_filter('json_jsonp_enabled', '__return_false');
        // Filters for WP-API version 2.x
        add_filter('rest_enabled', '__return_false');
        add_filter('rest_jsonp_enabled', '__return_false');
    }
    // 移除头部 wp-json 标签和 HTTP header 中的 link
    remove_action('wp_head', 'rest_output_link_wp_head', 10);
    remove_action('template_redirect', 'rest_output_link_header', 11);
    /*禁用未登录的用户访问API*/
    add_filter('rest_api_init', function(){
        if (!is_user_logged_in()) {
            wp_die(__('非法操作!'));
        }
    }, 99);

    第二、disable-json-api插件

    插件地址:https://wordpress.org/plugins/disable-json-api/

    下载和启动插件之后,可以彻底解决输出字符问题。

  • centos下安装微擎w7 配置redis以及phpredis扩展安装教程

    centos下安装微擎w7 配置redis以及phpredis扩展安装教程

    [title]CentOS安装redis及添加phpredis扩展[/title]

    一、安装redis

    a、下载redis:

    wget???http://download.redis.io/redis-stable.tar.gz;tar -zxvf redis-stable.tar.gz

    cd redis-stable

    make

    make install

     

     

    b、在redis安装目录下进入utils目录,执行自动安装脚本

    cd utils/./install_server.sh

    一路回车都按照默认设置执行

    //执行完脚本后,会出现以下提示:

    Selected config:

    Port ??????????: 6379

    Config file ???: /etc/redis/6379.conf

    Log file ??????: /var/log/redis_6379.log

    Data dir ??????: /var/lib/redis/6379

    Executable ????: /usr/local/bin/redis-server

    Cli Executable : /usr/local/bin/redis-cli

    ???????????????????????????

    c、添加redis开机自启动

    //修改文件权限chmod 755 /etc/init.d/redis_6379

    //添加自启动

    chkconfig –add redis_6379

    chkconfig –level 345 redis_6379?on

     

    ?

    d、检查远程服务器的6379端口是否被防火墙拦截。假如未开启,则开添加

    /sbin/iptables -I INPUT -p tcp –dport 6379 -j ACCEPT

    /etc/init.d/iptables restart

    (视服务器情况而定,如果不知道的话可以选择重启服务器)

    也可以在wdcp的后台系统管理–iptables添加规则

    使用安骑士等防火墙软件的自行添加6379端口访问通过的规则

    ?

    e、通过客户端命令行连接redis?

    //在本地连接redis-cli -h 127.0.0.1 -p 6379

    二、添加phpredis扩展

    获取并解压安装包cd

    wget ?https://github.com/phpredis/phpredis/archive/develop.zip

    unzip develop.zip

    注意:若提示未找到“unzip”命令

    解决办法:运行 ??yum install unzip -y

    //进入目录

    cd phpredis-develop

    使用phpize命令添加扩展,phpize命令所在路径根据实际情况修改

    /www/wdlinux/nginx_php/bin/phpize

    注意:可能会有“Cannot find autoconf. Please check your autoconf installation and the?$PHP_AUTOCONF environment variable. Then, rerun this script.”错误

    解决办法:运行 yum install -y autoconf

    再重新运行前面的phpize命令

    出现类似下图的提示,则代表成功

    //配置。php-config命令所在路径根据实际情况修改

    ./configure –with-php-config=/www/application/nginx_php-5.4.26/bin/php-config

    出现类似下面的内容,说明此步骤没问题

    安装

    make

    出现类似下图,说明此步骤成功:

    make install

    出现类似下面的内容,说明成功:

    代表生成redis.so成功,可以进到该目录去查看是否有生成。该路径也是视实际情况而定。

    //php.ini中加入redis.so扩展

    vim ?/www/wdlinux/nginx_php/etc/php.ini

    //加入这一行,保存退出。路径要使用上面装完redis生成redis.so的路径

    extension=/www/wdlinux/nginx_php?/lib/php/extensions/no-debug-non-zts-20121212/redis.so

    重启web服务(重点是重启php)

    通过phpinfo查看是否添加了redis扩展

    (额外帮助信息)启动/关闭服务命令

    //查看是否启动redis服务ps -ef | grep redis

    //启动

    //etc/init.d/redis_6379 ?start

    //通过配置文件启动

    //usr/local/bin/redis-server???/etc/redis/6379.conf

    //关闭

    //etc/init.d/redis_6379 ?stop

    //关闭,假如是默认端口号6379,可以省略 -p 6379参数

    //usr/local/bin/redis-cli -p 6379 shutdown

    [title]配置微擎w7 redis[/title]

    原样复制以下内容到站点根目录下data目录下的config.php文件末尾

    $config['setting']['redis']['server'] = '127.0.0.1';
    $config['setting']['redis']['port'] = 6379;
    $config['setting']['redis']['pconnect'] = 0;
    $config['setting']['redis']['requirepass'] = '';
    $config['setting']['redis']['timeout'] = 1;

     

  • wordpress 使用 cloudflare CDN https  WP-PostViews Plus 兼容插件

    wordpress 使用 cloudflare CDN https WP-PostViews Plus 兼容插件

    前面我们介绍了,CloudFlare 使用 免费SSL证书 图文教程,这里我们使用的是Flexible模式,但是全盘使用https的话,后台的编辑器无法出内容(因为使用了云朵的关系),所以我们这里使用了page规则:

    http://laoji.org/wp-admin/* ?-> ?DISAPBLE APP

    /wp-admin 目录下所有内容不加速,切好我们使用了?WP-PostViews Plus 插件,但是有一个JS还是无法加载(因为我们使用了上面的disable规则导致):

    http://laoji.org/wp-admin/admin-ajax.php?action=wp_pvp_count&post_id=0&count_id=6666cd76f96956469e7be39d750cc7d9
    下面我们手动修改一下插件的代码:
    '<?php echo("http:","",admin_url('admin-ajax.php')) ?>',
    改成:
    '<?php echo(str_replace("http:","",admin_url('admin-ajax.php'))) ?>',

    搞定,现在前台的数据就可以出来了。

  • 华为云免费6个月领取 免费服务器

    华为云免费6个月领取 免费服务器

    百度开放云 bcc 免费服务器,继百度云之后华为云也开始免费。
    华为云:http://www.hwclouds.com/
    企业免费试用
    • · 2核 CPU
    • · 40G 系统盘
    • · 5M 宽带
    • · 4G 内存
    • · 100G 数据盘
    • · 1个弹性公网IP
    个人免费试用
    • · 1核 CPU
    • · 40G 系统盘
    • · 1个弹性公网IP
    • · 1G 内存
    • · 1M 宽带

    可以免费6个月,比较坑比的是华为云的工单系统并不完善,每次提交工单以后,客服都会打电话过来联系我们。

    最弱的是居然不能更换系统,比如你安装了centos7,想换成windows系统都不行。

    其他的不多说,既然是免费的产品那也就不再挑剔了。希望华为云能越做越好。

  • 百度开放云 bcc 免费服务器

    百度开放云 bcc 免费服务器

    前面我们评测了百度开放云,百度开放云 云服务器BCC 性能评测

    百度云决定搞个大事情!百度云服务器?免费赠送!0元享云服务器

    助力全民云+时代

    活动时间:2017年6月7日—2017年7月7日只要登陆百度云官网cloud.baidu.com完成实名认证

    即可领取免费云服务器!

    多样配置,弹性时长0门槛满足您的多样需求您的云上第一步,百度云来助!
    step1:点击“登陆”,注册账号并激活
    step2:完成企业/个人实名认证
    step3:选择配置并领取免费云服务器
    坑比的是宽带需要自己另行购买!

    [title]

    活动规则:

    [/title]

    1.活动对象:活动期间通过实名认证且未使用过百度云服务器的用户2.活动时间:2017年6月7日—2017年7月7日3.限量名额:每天10点开始抢购,企业用户每天限量100名,个人用户每天限量50名,抢完即止。

    4.活动期间内同一个人用户、同一企业用户仅限领取一次免费云服务器使用权且仅限领用一款免费云服务器(仅限广州机房普通型云服务器)。(同一手机号、同一认证证件、同一account ID 或经百度云排查多个账户为同一实际控制人的均被视为同一用户)

    5.参与活动的用户应同时遵守百度云官网所示的《用户服务协议》、产品相关的协议及页面使用规则(包括但不限于产品服务等级协议,使用规范,产品服务条款等);免费领用的云服务器可以正常进行升级和续费操作。

    6.活动期间,可免费领用的百度云服务器的产品配置、产品数量及产品所在机房可能会根据活动情况而随时调整;对恶意注册或采用其他作弊方式参与活动、领用后长期闲置百度云服务器(15天及以上)、利用百度云产品从事违法违规行为或违反百度云相关协议规则的用户,百度云保留对其收回免费云服务器使用资格的权利。

    7.百度云在法律允许的范围内享有对本活动的解释权。

    8.对活动有任何疑问,欢迎您随时拨打客服电话 4008-777-818? 咨询,也可以登陆百度云官网论坛进行相关活动咨询。

     

  • Linux下配置GOROOT和GOPATH

    Linux下配置GOROOT和GOPATH

    更好的使用Go,需要设置环境变量

    vim ~/.bash_profile

    在前面添加

    export GOROOT=/usr/lib/go
    export GOPATH=/usr/local/golang
    export PATH=$PATH:$GOPATH(原路径后用冒号连接新路径)

    立刻生效:

    source ~/.bash_profile

     

  • 宝塔面板Linux 3.X/4.X 忘记密码的解决方案

    宝塔面板Linux 3.X/4.X 忘记密码的解决方案

    如果是忘记了默认密码
    可以输入以下命令回车找回默认初始密码(默认账号admin)

    cat /www/server/panel/default.pl

    如图紫框即初始默认密码
    也可以通过重置密码的方式来解决(其中“新密码”即你要改的密码)

    cd /www/server/panel && python tools.pyc panel 新密码

    紫框即你要修改的密码
    红框即面板账户

  • WordPress集成smtp 免插件 邮件发送功能

    WordPress集成smtp 免插件 邮件发送功能

    [title]教程介绍[/title]

    为什么要使用smtp邮件发送功能,WordPress自带的邮件发送功能是用mail()函数发送的邮件,那么就会存在以下几种问题,主机不支持mail()函数,发送出去的邮件对方没收到,进入垃圾箱了。由于评论注册等功能都需要用到邮件发送功能,为了避免出现没收到,无法发送等问题,所以强烈推荐使用smtp邮件发送功能。

    [title]代码预览[/title]

    //smtp发送邮件功能
    add_action('phpmailer_init', 'mail_smtp');
    function mail_smtp( $phpmailer ) {
        $phpmailer->FromName = '老季博客'; //名字
        $phpmailer->Host = 'smtp.laoji.org'; //smtp地址,可以到你使用的邮件设置里面找
        $phpmailer->Port = 465; //端口,一般不用修改
        $phpmailer->Username = 'system@laoji.org';  //邮件账号
        $phpmailer->Password = 'laoji.org'; //邮件密码
        $phpmailer->From = 'system@laoji.com';//邮件账号
        $phpmailer->SMTPAuth = true;  
        $phpmailer->SMTPSecure = 'ssl'; //tls or ssl (port=25留空,465为ssl)一般不用修改
        $phpmailer->IsSMTP();
    }

    使用说明

    只需要将以上代码添加到functions.php文件即可
  • php 解码GL\x4f\x42A\x4c\x53 代码实例

    php 解码GL\x4f\x42A\x4c\x53 代码实例

    解码GL\x4f\x42A\x4c\x53,比如在wordpress的wp-autopost插件中就有这样的代码

    形如GL\x4f\x42A\x4c\x53的文件解码,一般不是直接16进制转字符就可以,对其中的引号和斜杠要做一些判断和处理,例子如下:

    < ?php
    $t=\'0123456789abcdefABCDEF\';
    $fn=\'hexcodedfile.php\';
    $r=$p=$qt=$s=\'\';
    $slash=false;
    $i=$j=0;
    if ($f=fopen($fn,"rb")){
    	$s=fread($f,filesize($fn));
    	fclose($f);
    	for ($i=0;$i<strlen($s);$i++){
    		$slash=false;
    		$p=sprintf("&nbsp;%06d,%06d",$i,$j);
    		if ($s&#91;$i&#93;==\'\'&&$s&#91;$i + 1&#93;==\'x\'
    			&&strpos($t,$s&#91;$i+2&#93;)!==false&&strpos($t,$s&#91;$i+3&#93;)!==false){
    			$qt=strtolower(substr($s,$i,4));
    			$slash=(($qt==\'\\x22\'||$qt==\'\\x5c\')&&$s&#91;$i-1&#93;!=\'\') //引号\\x22 斜杠\\x5c,前面不是斜杠,需补充斜杠
    				 ||(($qt==\'\\x22\'||$qt==\'\\x5c\')&&substr($s,$i-2,2)==\'\');//前面是2+个斜杠,需要补充斜杠
    			if ($slash) {
    				$p=sprintf("<font color=red>%s",$p);
    				$j++;
    			}
    			echo \'H:\'.$qt.\'=>&nbsp;\'.chr(hexdec($s[$i+2].$s[$i+3])).$p.\'<br />\';
    			$qt=($slash)?\'\':\'\';
    			$r.=$qt.chr(hexdec($s[$i+2].$s[$i+3]));
    			$i=$i+3;
    		}else{
    			echo \'C:=====>&nbsp;\'.$s[$i].$p.\'<br />\';
    			$r.=$s[$i];
    		}
    		$j++;
    	}
    	$fn.=\'-1\';
    	$f=fopen($fn,"wb");
    	fwrite($f,$r);
    	fclose($f);
    	echo \'done...\';
    }
    ?>

     

  • Linux Sudo本地提权漏洞

    Linux Sudo本地提权漏洞

    近日Linux?Sudo被爆高风险漏洞(漏洞编号:CVE-2017-1000367),攻击者利用该漏洞可本地提权至root权限,该漏洞影响linux发行版本包括redhat、debian、ubuntu、suse,目前漏洞利用代码已公开,为避免您的业务受影响,腾讯云安全中心提醒您及时更新补丁,避免被内部攻击者利用进行提权攻击。

    【漏洞概述】
    在开启SELinux的条件下,Sudo读取tty时,没有正确解析/ proc / [pid] / stat的内容,本地攻击者可能会使用此方法来覆盖文件系统上的任何文件,从而绕过预期权限或获取root权限。

    【风险等级】
    ? ?高风险

    【漏洞风险】
    ? ?高危,可使系统普通用户权限提升到超级管理员权限。

    【影响版本】
    Sudo 1.8.6p7?到 1.8.20版本受影响
    ? ?受影响的操作系统包括:
    ? ?Centos/RHEL 5、6、7系列
    ? ?Ubuntu 14.04、15.04、16.04、16.10、17.04、17.10 LTS版本

    ? ?Debian wheezy、jessie、jessie、sid版本
    ? ?SUSE Linux Enterprise Software Development Kit 12 SP1、SP2
    ? ?SUSE Linux Enterprise Server for SAP 12
    ? ?SUSE Linux Enterprise Server 12 SP1 、SP2、12-LTSS
    ? ?SUSE Linux Enterprise Desktop 12 SP1 、SP2
    ? ?SUSE Linux Enterprise Server for Raspberry Pi 12 SP2

    ? ?OpenSuse


    【安全版本】
    1)Centos /Redhat系列安全版本
    ??Centos /RHEL 7: 1.8.6p7-22.el7_3
    ??Centos /RHEL 6: 1.8.6p3-28.el6_9
    ??Centos /RHEL 5: 1.7.2p1-30.el5_11
    2)Ubuntu系列安全版本
    ??Ubuntu 14.04 LTS: 1.8.9p5-1ubuntu1.4
    ??Ubuntu 16.04 LTS: 1.8.16-0ubuntu1.4
    ??Ubuntu 16.10 LTS: 1.8.16-0ubuntu3.2
    3)Debian系列安全版本
    ??Debian 7(wheezy):??1.8.5p2-1+nmu3+deb7u3
    ??Debian 8(jessie):??1.8.10p3-1+deb8u4
    4)SUSE /OpenSuse系列安全版本
    ??1.8.10p3-2.11.1

    ??1.8.10p3-10.5.1

    ?

    【漏洞检测】
    1)可以使用sudo -V命令查看sudo版本是否在受影响版本范围,如在,这说明受影响,否则不受影响;
    2)使用系统自带的包管理器进行查看:
    (1)Centos /Redhat系列可以使用“rpm -qa|grep sudo”命令进行查看;
    (2)Ubuntu/Debian系列可以使用“dpkg -l sudo”进行版本确认;

    ?

    【修复建议】
    目前官方均已发布补丁,详细操作建议如下:

    Ubuntu/Debian系列:
    sudo apt-get install sudo或使用sudo apt-get update & sudo apt-get upgrade
    CentOS/RHEL系列:?

    yum update –exclude kernel*?或者使用yum update sudo -y

    【漏洞参考】
    1)Ubuntu:?https://people.canonical.com/~ubuntu-security/cve/2017/CVE-2017-1000367.html?
    2)Redhat:?https://access.redhat.com/security/cve/cve-2017-1000367
    3)Debain:?https://security-tracker.debian.org/tracker/CVE-2017-1000367?
    4)SUSE/openSUSE:?https://www.suse.com/security/cve/CVE-2017-1000367.html
    5)Seclist通告:http://seclists.org/oss-sec/2017/q2/358

WeChat
↑