使用Snuffleupagus保护PHP

之前介绍了使用Suhosin保护PHP,由于Suhosin仅支持到php5.x,对于php7.x及以上版本可以试试Snuffleupagus

编译安装:

git clone https://github.com/jvoisin/snuffleupagus
cd snuffleupagus/src
phpize
./configure --with-php-config=/usr/local/php/bin/php-config --enable-snuffleupagus
make
make install

然后在php.ini中引用

[Snuffleupagus]
extension=snuffleupagus.so
sp.configuration_file=/usr/local/php/conf.d/snuffleupagus.rules

其中/usr/local/php/conf.d/snuffleupagus.rules为规则文件,内容可参考:

sp.eval_blacklist.list("base64_decode,system,exec,shell_exec,passthru,proc_open,proc_close, proc_get_status,checkdnsrr,getmxrr,getservbyname,getservbyport, syslog,popen,show_source,highlight_file,dl,socket_listen,socket_create,socket_bind,socket_accept, socket_connect, stream_socket_server, stream_socket_accept,stream_socket_client,ftp_connect, ftp_login,ftp_pasv,ftp_get,sys_getloadavg,disk_total_space, disk_free_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname");sp.global.show_old_php_warning.disable();

和Suhosin一样,可以设置函数黑白名单。
更多使用方法参考官网:https://snuffleupagus.readthedocs.io/config.html

为CentOS7升级gcc至10.x

yum -y install centos-release-scl
yum -y install devtoolset-10-gcc*
scl enable devtoolset-10 bash

需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
如果要永久生效的话,执行:

echo "source /opt/rh/devtoolset-10/enable" >>/etc/profile

rm删除时/usr/bin/rm: Argument list too long

1、find

find . -name "*" | xargs rm -rf

2、find with delete

find . -name "*" -delete

3、rsync
先建立一个空目录

mkdir -p /root/blank

用rsync删除目标目录

rsync --delete-before -av /root/blank/ /home/data/

推荐使用rsync,速度最快

DPlayer移动端播放时自动隐藏暂停按扭

问题:使用DPlayer在移动端观看视频时,播放器中间一直有一个暂停按扭。
解决:监听播放状态,点击播放时加上自动隐藏方法。

dp.container.addEventListener('mousemove', () => {
dp.controller.setAutoHide()
})
dp.container.addEventListener('click', () => {
dp.controller.setAutoHide()
})
//自动播放状态也要隐藏
dp.on('playing', function () {
console.log('playing')
dp.controller.setAutoHide()
})

SeaCMS剧情分类按ID排序

1、前台

编辑/include/common.file.func.php文件第1876行,将

$sql="select tid,upid,tname,ishidden,-1 as tcount from sea_jqtype order by upid asc";

修改为

$sql="select tid,tname,ishidden,-1 as tcount from sea_jqtype";

编辑/include/common.redis.func.php文件第1883行,将

$sql="select tid,upid,tname,ishidden,-1 as tcount from sea_jqtype order by upid asc";

修改为

$sql="select tid,tname,ishidden,-1 as tcount from sea_jqtype";

2、后台

编辑文件/admin/admin_video.php文件第809行,将

$sql="select tid,upid,tname,ishidden,-1 as tcount from sea_jqtype group by tname order by upid asc";

修改为

$sql="select tid,tname,ishidden,-1 as tcount from sea_jqtype";