文章11
标签6
分类3

简述网安备案经历

背景资料

什么是网安备案:

依据《计算机信息网络国际联网安全保护管理办法》第十二条的规定,各网站在工信部备案成功之后,需在网站开通之日起30日内到公司实际经营地或个人现居住地公安机关履行公安备案手续。
根据《计算机信息网络国际联网安全保护管理办法》(公安部令第33号)的 第二十三条规定
违反本办法第十一条、第十二条规定,不履行备案职责的,由公安机关给予警告或者停机整顿不超过六个月的处罚。

为了保证网站开通的合规性,本站于2020年8月5日提交网安备案申请。


网上提交

  1. 前往全国互联网安全管理服务平台
  2. 点击联网备案登录loginbtn
  3. 点击注册registerbtn
  4. 填入正确的注册信息;registercontent
  5. 登录后在开办主体管理处补全自己的个人信息;maincontent
  6. 点击新办网站申请,按要求填入网站的信息;websiteapply
  7. 收到资料审核通过短信后于指定时间进行当面核验(或直接备案通过)。notice

Tips:

  • 注册信息和开办主体请务必使用真实信息,否则主体审核不会通过;
  • 主体审核时也可以先提交网站备案申请;
  • 管理能力或时间不足的站长尽量关闭本站评论、论坛等交互式模块,否则处理不及时需要承担监管不力责任;
  • 如果你认为交互式模块很重要,不建议图一时方便,临时性地关闭模块以非交互式名义进行备案,否则备案可能会被吊销。

当面核验

网上盛传的一种说法是非交互式网站不需要当面核验,这其实是不准确的。当地网安大队会根据具体情况决定是否需要当面核验。
所以去当面核验也不用太紧张,一般都是检查一下网站的内容,确认你是否有监管能力。

未成年人,特别是平时没有监管能力的未成年人,请与监护人携带身份证一同前往。

这里要提一下对日志保存的要求,《责任书》是要求网站日志应当保存六个月以上。这个日志可能包括两部分:特定情况的报错日志和日常的访问日志。 Linux系统中/var/log/目录中的日志默认保存四周并不生成系统日志(syslog.log),所以如果你想合格地监管网站,需要手动修改logrotate配置文件:

  1. 可以配置/etc/syslog.conf生成系统日志文件。与messages文件不同的是,它只记录警告信息,所以更应该关注该文件。要让系统生成该日志文件,在/etc/syslog.conf文件中加上

    *.warning /var/log/syslog

  2. 修改系统日志文件保存的时间,需要修改/etc/logrotate.conf中的

rotate 4

rotate 35

# no packages own wtmp -- we'll rotate it here
/var/log/wtmp {
    missingok
    monthly
    create 0664 root utmp
    minsize 1M
    rotate 1
}

中的1改为6,保存后通过service syslog restart命令重启syslog进程即可。

  1. 其他Web服务器的修改原理相似,只作举例:

/data/wwwlogs/*nginx.log {
  daily
  rotate 48
  missingok
  dateext
  compress
  notifempty
  sharedscripts
  postrotate
    [ -e /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
  endscript
}
/data/wwwlogs/*apache.log {
  daily
  rotate 48
  missingok
  dateext
  compress
  notifempty
  sharedscripts
  postrotate
    [ -e /var/run/httpd.pid ] && kill -USR1 `cat /var/run/httpd.pid`
  endscript
}

Tips: 如果您使用了CDN,通常情况下访问日志由您的服务提供商保存。upyun_log

【第三期】学海对拳——2020.7.25周论文精选

No 1. 《The Computational Limits of Deep Learning》
No 2. 《Learning from Noisy Labels with Deep Neural Networks: A Survey》
No 3. 《Ideas for Improving the Field of Machine Learning: Summarizing Discussion from the NeurIPS 2019 Retrospectives Workshop》
No 4. *《Monte-Carlo Tree Search as Regularized Policy Optimization》
No 5. 《Towards Deeper Graph Neural Networks》
No 6. 《Xiaomingbot: A Multilingual Robot News Reporter》
No 7. *《Unsupervised Shape and Pose Disentanglement for 3D Meshes》
No 8. *《CheXphoto: 10,000+ Smartphone Photos and Synthetic Photographic Transformations of Chest X-rays for Benchmarking Deep Learning Robustness》
No 9. 《Active Learning under Label Shift》
No 10. 《Few-Shot Object Detection and Viewpoint Estimation for Objects in the Wild》
No 11. 《Generating Person Images with Appearance-aware Pose Stylizer》
No 12. *《Deep Learning in Protein Structural Modeling and Design》
No 13. 《Visualizing Deep Graph Generative Models for Drug Discovery》
No 14. *《Whole-Body Human Pose Estimation in the Wild》
No 15. 《Shape and Viewpoint without Keypoints》
No 16. 《ProteiNN: Intrinsic-Extrinsic Convolution and Pooling for Scalable Deep Protein Analysis》
No 17. *《Contact and Human Dynamics from Monocular Video》
No 18. 《Generative Hierarchical Features from Synthesizing Images》
No 19. *《Do Adversarially Robust ImageNet Models Transfer Better?》
No 20. 《Ideas for Improving the Field of Machine Learning: Summarizing Discussion from the NeurIPS 2019 Retrospectives Workshop》
No 21. 《D2D: Learning to find good correspondences for image matching and manipulation》
No 22. *《CrossTransformers: spatially-aware few-shot transfer》
No 23. *《A Unifying Perspective on Neighbor Embeddings along the Attraction-Repulsion Spectrum》
No 24. 《TSIT: A Simple and Versatile Framework for Image-to-Image Translation》
No 25. 《RetrieveGAN: Image Synthesis via Differentiable Patch Retrieval》
No 26. 《SketchGraphs: A Large-Scale Dataset for Modeling Relational Geometry in Computer-Aided Design》
No 27. 《Points2Surf: Learning Implicit Surfaces from Point Cloud Patches》
No 28. *《Accelerating 3D Deep Learning with PyTorch3D》
No 29. 《Path Signatures on Lie Groups》
No 30. 《Layer-Parallel Training with GPU Concurrency of Deep Residual Neural Networks Via Nonlinear Multigrid》

PHP8挖坑记

最后更新于2021-01-03

灵感来源

本站从Vultr(CHOOPA-Tokyo)迁移到阿里云(深圳)后,重新部署了Linux+Nginx+Mysql+PHP+Apache版本,优化了套件的安全性。恰逢PHP8发布Beta版本,且加入了JIT(Just In Time),遂尝试性进行更新。

P.S. PHP8.0正式版发布后已跟进。

在PHP8正式发布后,本文会更新基准测试 etc.


什么是JIT

在计算机技术中,即时编译(英语:just-in-time compilation,缩写为JIT;又译及时编译、实时编译),也称为动态翻译或运行时编译,是一种执行计算机代码的方法,这种方法涉及在程序执行过程中(在运行期)而不是在执行之前进行编译。通常,这包括源代码或更常见的字节码到机器码的转换,然后直接执行。实现JIT编译器的系统通常会不断地分析正在执行的代码,并确定代码的某些部分,在这些部分中,编译或重新编译所获得的加速将超过编译该代码的开销。

JIT编译是两种传统的机器代码翻译方法——提前编译(英语:ahead-of-time compilation)(AOT)和解释——的结合,它结合了两者的优点和缺点。大致来说,JIT编译将编译代码的速度与解释的灵活性、解释器的开销以及额外的编译开销(而不仅仅是解释)结合起来。JIT编译是动态编译的一种形式,允许自适应优化(英语:adaptive optimization),比如动态重编译和特定于微架构的加速——因此,在理论上,JIT编译能够比静态编译产生更快的执行速度。解释和JIT编译特别适合于动态编程语言,因为运行时系统可以处理后期绑定(英语:Late binding)的数据类型并实施安全保证。

PHP8中JIT的支持是Opcache的一部分,近年来PHP在核心数据结构HashTableZend VM中某些操作码与Opcache的Optimizer组件下了不少功夫。JIT的加入可能意味着其他方法优化已经到达极限了

转自:Wikipedia


安装方法

下载php-8.0.0.tar.gz - php.net代码(截止发文最新的Release版本)。
代码如下(依赖请自行解决)

wget https://www.php.net/distributions/php-8.0.0.tar.gz
tar zxvf https://www.php.net/distributions/php-8.0.0.tar.gz && cd php-8.0.0
./buildconf
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/etc/php.d --with-fpm-user=www --with-fpm-group=www --enable-fpm --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir=/usr/local/libiconv --with-freetype --with-jpeg --with-zlib --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-exif --enable-sysvsem --enable-inline-optimization --with-curl=/usr/local/curl --enable-mbregex --enable-mbstring --with-password-argon2 --with-sodium=/usr/local --enable-gd --with-openssl=/usr/local/openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-ftp --enable-intl --with-xsl --with-gettext --with-zip=/usr/local --enable-soap --disable-debug --enable-opcache --enable-calendar
make && make install

cp php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
service php-fpm start
systemctl enable php-fpm

Opcache使用配置

cd /usr/local/php/etc/php.d
vim 02-opcache.ini

写入以下内容:

[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=192
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=100000
opcache.max_wasted_percentage=5
opcache.use_cwd=1
opcache.validate_timestamps=1
opcache.revalidate_freq=60
;opcache.save_comments=0
opcache.fast_shutdown=1
opcache.consistency_checks=0
;opcache.optimization_level=0
opcache.jit_buffer_size=128m
opcache.jit=1205

后重启php-fpm

service php-fpm restart

常见问题

  1. PHP7.4与PHP8共存未解决(指定的--with-config-file-scan-dir不生效)(是否解决未知)
  2. configure: error: iconv does not support errno
    解决方案相当玄学,1.16报错可以尝试1.14版本:
    wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
    ./configure --prefix=/usr/local/libiconv
    make && make install
  3. 目前和PHP7最常见的兼容性问题就是PHP8.0报错500,因为PHP8禁用@运算符强制屏蔽致命性错误,请修改相关代码。目前测试Typecho支持良好,OneIndexR Core问题已修复。

基准测试

基准测试可以参考Phoronix的