MRX.LAFuck the Rules!

和某漏洞塔说拜拜了

鉴于某漏洞塔的外号不是白叫的,我也要表示一哈尊重,用不起了.看了下国内的面板基本都是需要SM认证(谁知道那天因为说了什么或者分享了什么被送上银手镯一副…),放弃,加上懒人又不愿用LNMP这种高大上的产品,所以还是转战国外的面板吧.

Fastpanel
https://fastpanel.direct/
之前我提了一次的,官网把安装命令藏在wiki里面..老毛子的产品,目前免费.
懒得介绍了,有兴趣自己去官网看看,又不是什么正经评测人.就随手记录一哈.

wget http://repo.fastpanel.direct/install_fastpanel.sh -O - | bash -

阅读全文 →

静态文件托管到Github并利用Jsdelivr当CDN以及更新缓存内容

简单明了一点,最近比较忙.
注册Github.创建一个仓库,要公开.记得勾选创建readme!
下载GitHub Desktop,然后把你的静态文件推送到你刚才创建的仓库,中间省略了一万字,如果用不好就等有空弄个详细点的带截图的.
然后就是套用Jsdelivr来做CDN了.
https://cdn.jsdelivr.net/gh/+你的用户名+仓库名+文件夹名+文件名
举例,我有一个放在github的文件a.css,放在名字为acangku的仓库,然后我的用户名是yonghuming.然后文件名是css.那么CDN地址如下:
https://cdn.jsdelivr.net/gh/yonghuming/acangku/css/a.css


怎么更新Jsdelivr缓存的静态文件内容.
把原来访问的链接
https://cdn.jsdelivr.net/…
改为
https://purge.jsdelivr.net/…
在浏览器中访问一次,你会看到一个json返回结果,就表示刷新成功了,如下图:阅读全文 →

自己制造Zblog的安全漏洞

为了方便采集入库的时候不过滤到HTML.

找到zb_system/function/c_system_common.php,注释掉1478到1514行,如下:
注意这是极不安全的做法,你也可以自己修改正则替换过滤掉指定内容.除非说你是封闭式站点才考虑如下注释方法

function FormatString($source, $para)
{
   /* 方便HTML入库
   if (strpos($para, ’[html-format]’) !== false) {
        $source = htmlspecialchars($source);
        //if (version_compare(PHP_VERSION, ’5.4.0′) >= 0) {
        //    $source = htmlspecialchars($source, (ENT_COMPAT | ENT_HTML401 | ENT_SUBSTITUTE), ”UTF-8”);
        //} else {
        //    $source = htmlspecialchars($source, ENT_COMPAT, ”UTF-8”);
        //}
    }
    if (strpos($para, ’[nohtml]’) !== false) {
        $source = preg_replace(”/<([^<>]*)>/si”, ”", $source);
        $source = str_replace(”<”, ”˂”, $source);
        $source = str_replace(”>”, ”˃”, $source);
    }
    if (strpos($para, ’[noscript]’) !== false) {
        $class  = new XssHtml($source);
        $source = trim($class->getHtml());
    }
    if (strpos($para, ’[enter]’) !== false) {
        $source = str_replace(”\r\n”, ”
“, $source);
        $source = str_replace(”\n”, ”
“, $source);
        $source = str_replace(”\r”, ”
“, $source);
        $source = preg_replace(”/(<br\/>)+/”, ”
“, $source);
    }
    if (strpos($para, ’[noenter]’) !== false) {
        $source = str_replace(”\r\n”, ”", $source);
        $source = str_replace(”\n”, ”", $source);
        $source = str_replace(”\r”, ”", $source);
    }
    if (strpos($para, ’[filename]’) !== false) {
        $source = str_replace(array(”/”, ”#”, ”$”, ”\\”, ”:”, ”?”, ”*”, ”\”", ”<”, ”>”, ”|”, ” ”), array(”"), $source);
    }
    if (strpos($para, ’[normalname]’) !== false) {
        $source = str_replace(array(”#”, ”$”, ”(”, ”)”, ”*”, ”+”, ”[”, ”]”, ”{”, ”}”, ”?”, ”\\”, ”^”, ”|”, ”:”, ”‘”, ”\”", ”;”, ”@”, ”~”, ”=”, ”%”, ”&”), array(”"), $source);
    }
    */
    return $source;
}