分享十个PHP安全的必备技巧-php教程

资源魔 134 0

保举:《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开发自学

抱歉,评论功能暂时关闭!