用 CDN 后获取评论者真实 IP 的方法

今天,本站成功接入腾讯云 CDN,享受高速内容分发网络。

做网站的人都知道,对于 WordPress 而言,保存评论者真实 IP 的重要性。我们经常会遇见恶意进行大量的行为,对于直连的主机,我们可以直接通过 IP 过滤掉这些恶意评论。

而对于套了一层 CDN 或代理的网站,这些方法可能就失效了。因为 WordPress 记录的 IP 是来自 $_SERVER['REMOTE_ADDR'],而用上 CDN 后,这会变成了 CDN 节点的 IP。

那么真实的 IP 藏在哪里呢?我们该如何通过 Hack WordPress 来使 WordPress 获取到真实的评论者 IP 呢?

继续阅读

使用 AutoIt3 在 Windows 下实现一个简单的 PHP-FPM

代码见真章,请勿直接用,按注释修改。

#NoTrayIcon

AutoItSetOption("MustDeclareVars", 1);限定变量必须先定义后使用,防止出错

;定义全局常量
Global Const $phpDir = "D:\Webserver\PHP53";PHP 路径
Global Const $phpFile = "php.exe";PHP 程序名
Global Const $phpExe = $phpDir & "\" & $phpFile;PHP 完整路径
Global Const $phpCgiFile = "php-cgi.exe";PHP-CGI 程序名
Global Const $phpCgiExe = $phpDir & "\" & $phpCgiFile;PHP-CGI 完整路径
Global Const $phpIniFile = "php.ini";PHP.INI 名
Global Const $phpIni = $phpDir & "\" & $phpIniFile;PHP.INI 完整路径

__onStart();运行前执行

OnAutoItExitRegister("__onExit");注册回调(退出后执行)

__main();执行主函数

Exit;退出

#comments-start
启动时运行函数
#comments-end
Func __onStart()

EndFunc ;==>__onStart

#comments-start
主函数
#comments-end
Func __main()
    If ($CmdLine[0] >= 1) Then
        __cmdMain()
        Exit
    EndIf
EndFunc ;==>__main

#comments-start
命令行主函数
#comments-end
Func __cmdMain()
    While 1
        If (__checkPhpCgiProcess() < $CmdLine[1]) Then
            __runPhpCgi($CmdLine[1] - __checkPhpCgiProcess())
        EndIf
        Sleep(10000)
    WEnd
EndFunc ;==>__cmdMain

#comments-start
退出时运行函数
#comments-end
Func __onExit()

EndFunc ;==>__onExit

#comments-start
检查 PHP-CGI 是否在运行
@return boolean 运行返回 true,否则返回 false
#comments-end
Func __checkPhpCgiState()
    Return ProcessExists($phpCgiFile)
EndFunc ;==>__checkPhpCgiState

#comments-start
检查 PHP-CGI 进程数
@return int 返回目前 PHP-CGI 进程数
#comments-end
Func __checkPhpCgiProcess()
    Local $phpCgiProcessArray = ProcessList($phpCgiFile)
    Return IsArray($phpCgiProcessArray) ? $phpCgiProcessArray[0][0] : 0;
EndFunc ;==>__checkPhpCgiProcess

#comments-start
运行 PHP-CGI
@param int $start 运行几个 PHP-CGI
#comments-end
Func __runPhpCgi($start = 3)
    Local $i = 1
    For $i = 1 To $start Step 1
        Run($phpCgiExe & " -b 127.0.0.1:9000", $phpDir, @SW_HIDE)
    Next
EndFunc ;==>__runPhpCgi

#comments-start
结束 PHP-CGI
#comments-end
Func __stopPhpCgi()
    While __checkPhpCgiState()
        __closePhpCgiProcess()
    WEnd
EndFunc ;==>__stopPhpCgi

#comments-start
结束 PHP-CGI 进程
#comments-end
Func __closePhpCgiProcess()
    ProcessClose($phpCgiFile)
EndFunc ;==>__closePhpCgiProcess

WordPress XSS 漏洞修复(屏蔽)通用傻瓜方法

缘起

此为 WordPress 搜索跨站脚本攻击(XSS)漏洞修复方法(感谢 360,让我发现此漏洞)的后续。

前些日子,收到 360 的提醒,说我的网站竟然高危,仅仅获得 2 分,速度打开,一看,满屏幕的跨站脚本攻击漏洞(WEB2.0),细细查看,愣了我半天。主要是说我的网站的 s 参数(搜索参数)和 replytocom 参数(回复参数)存在漏洞。可是,我不知道 360 得出的这个结果从何而来,我反复访问所谓的漏洞页面和正常页面进行检测,发现(也许是我眼花)毫无漏洞。而且那个搜索参数漏洞我之前才修复,并且进过检测确认没有已漏洞了,真不知道那个漏洞从何而来。

继续阅读

WordPress 搜索跨站脚本攻击(XSS)漏洞修复方法(感谢 360,让我发现此漏洞)

缘起

近些日子,发现了 360 网站安全检测这个玩意儿,兴致勃勃地填入自己的网站开始了检测之旅。

悲剧的是,360 居然告诉我,我的网站有漏洞。知名的 WordPress 开源程序居然有漏洞?令我有所疑惑,仔细一查,原来这个漏洞不是 WordPress 弄出来的,而是我们自己的失误而造成的。 继续阅读

养成良好的 WordPress 撰写习惯

置顶

相信大家在用 WordPress 写文章时,都没有注意过排版吧,这是一个极大的错误,我们需要养成良好的 WordPress 撰写习惯,这样,我们就可以再换各种主题的过程中,都不会出现有些主题因没有一些功能导致排版完全混乱的现象出现。

继续阅读