保举:《PHP视频教程》
你好,PHP 开发职员。 正在这篇文章中,我将测验考试为你提供一些能够进步 PHP 使用顺序平安性的详细步骤。我存眷的是 PHP 设置装备摆设自身,以是咱们没有会探讨 SQL 注入、HTTPS 或其余与 PHP 有关的成绩。
我将应用我的docker-entrypoint.sh
剧本中的 bash 行来讲昭示例,但当然你能够将其使用于非 docker 环境。
Sessions
应用较长的 Session ID 长度
添加会话 id 长度会使攻打者更难猜到(经过暴力或更有可能的侧通道攻打)。长度能够介于22 到 256 个字符之间。默许值为 32。
sed -i -e "s/session.sid_length = 26/session.sid_length = 42/" /etc/php7/php.ini
(别问我为何正在 Alpine Linux 上是26…)
你可能还想查看 session.sid_bits_per_character。
应用具备限度权限的自界说会话保留门路
只有 nginx/php 需求拜访会话,以是让咱们将它们放正在一个具备受限权限的非凡文件夹中。
sed -i -e "s:;session.save_path = \"/tmp\":session.save_path = \"/sessions\":" /etc/php7/php.ini mkdir -p /sessions chown nginx:nginx /sessions chmod 700 /sessions
当然,假如你应用 Redis 解决会话,你其实不需求关怀这一局部;)
平安会话 Cookie
session.cookie_httponly来阻止 javascript 拜访它们。更多信息。
sed -i -e "s/session.cookie_httponly.*/session.cookie_httponly = true/" /etc/php7/php.ini sed -i -e "s/;session.cookie_secure.*/session.cookie_secure = true/" /etc/php7/php.ini
session.cookie_secure 避免你的 cookie 正在明文 HTTP 上传输。
session.cookie_samesite 以避免跨站点攻打。仅实用于最新的 PHP/阅读器。
应用严格模式
因为 Cookie 标准,攻打者可以经过内陆设置 Cookie 数据库或 JavaScript 注入来搁置不成移除了的会话 ID Cookie。session.use_strict_mode 能够避免应用攻打者初始化的会话 ID。
限度生活期
会话应与阅读器一同封闭。因而设置 session.cookie_lifetime 为0。
Open_basedir
open_basedir 是一个php.ini
设置装备摆设选项,容许你限度 PHP 能够拜访的文件/目次。
sed -i -e "s#;open_basedir =#open_basedir = /elabftw/:/tmp/:/usr/bin/unzip#" /etc/php7/php.ini
这里我增加了 unzip,由于它是由 Composer 应用的。 /elabftw
是一切源 php 文件所正在的地位。我没有记患上为何/tmp
会正在这里,但一定有缘由。
禁用性能
这一点要小心,由于你很容易搞砸一个使用顺序。但这相对值患上考察。假定攻打者以某种形式上传了一个 webshell,假如正确禁用了,webshell 将没有会真正工作,由于shell_exec
将被禁用,同类也将被禁用。我提供了一个实用于elabftw 的列表,但并非百分之百实现。
sed -i -e "s/disable_functions =/disable_functions = php_uname, getmyuid, getmypid, passthru, leak, listen, diskfreespace, tmpfile, link, ignore_user_abort, shell_exec, dl, system, highlight_file, source, show_source, fpaththru, virtual, posix_ctermid, 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_times, posix_ttyname, posix_uname, phpinfo/" /etc/php7/php.ini
禁用 url_fopen
allow_url_fopen 这个选项很风险的。禁用它。更多信息正在此处。
sed -i -e "s/allow_url_fopen = On/allow_url_fopen = Off/" /etc/php7/php.ini
禁用 cgi.fix_pathinfo
你没有想让非 PHP 文件作为 PHP 文件执行,对吗?那就禁用此性能。更多信息。
sed -i -e "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g" /etc/php7/php.ini
暗藏 PHP 版本
最初,没有假思索地说:
sed -i -e "s/expose_php = On/expose_php = Off/g" /etc/php7/php.ini
如今就这样。我心愿你会发现这篇文章颇有用,并改良你的设置装备摆设;)
假如我错过了甚么首要的货色,请正在评论中通知我!
原文地点:https://dev.to/elabftw/10-steps-for-securing-a-php-app-5fnp
译文地点:https://learnku.com/php/t/50851
以上就是分享十个PHP平安的必备技术的具体内容,更多请存眷资源魔其它相干文章!
标签: php php开发教程 php开发资料 php开发自学
抱歉,评论功能暂时关闭!