Heim Backend-Entwicklung PHP-Tutorial lnmp下php安全配置详解(禁用不安全php函数与php上传分离等)

lnmp下php安全配置详解(禁用不安全php函数与php上传分离等)

Jul 25, 2016 am 08:51 AM

本文介绍了lnmp架构下php安全配置的方法,包括禁用不安全PHP函数、关闭php错误日志、php上传分离、关闭php信息、禁止动态加载链接库、禁用打开远程url等安全措施。

php安全配置的几个方面:

1、使用open_basedir限制虚拟主机跨目录访问

[HOST=www.xingzuo51.com] open_basedir=/data/site/www.xingzuo51.com/:/tmp/ [HOST=test.xingzuo51.com] open_basedir=/data/site/test.xingzuo51.com/:/tmp/

说明: www.xingzuo51.com下的php程序被限制在open_basedir配置的两个目录下, 不可以访问到其他目录。 如果没有做以上的配置,那么test.xingzuo51.com与www.xingzuo51.com的程序可以互相访问。 如果其中一个站点有漏洞被黑客植入了webshell,可以通过这个站点拿下同一台服务器的其他站点,最后挂木马。

注意: 目录最后一定要加上/。 比如写/tmp,站点同时存在/tmp123等等以/tmp开头的目录,那么黑客也可以访问到这些目录,另外, php5.3以上支持这个写法,5.2不支持。

2、禁用不安全PHP函数 disable_functions = show_source,system,shell_exec,passthru,exec,popen,proc_open,proc_get_status,phpinfo 禁止php执行以上php函数,以上php程序可以执行linux命令, 比如可以执行ping、netstat、mysql等等.如果你的系统有提权bug,后果你懂得.

3、关注软件安全资讯 积极关注linux内核、php安全等信息并及时采取错误

4、php用户只读 这 个方法是我最推崇的方法,但是执行之前一定要和php工程师商量. 为什么?例如站点www.xingzuo51.com根目录用户与组为nobody,而运行php的用户和组为phpuser。目录权限为755,文件权限为 644. 如此,php为只读,无法写入任何文件到站点目录下。也就是说用户不能上传文件,即使有漏洞, 黑客也传不了后门, 更不可能挂木马. 这么干之前告知程序员将文件缓存改为nosql内存缓存(例如memcached、redis等),上传的文件通过接口传到其他服务 器(静态服务器)。 备注:程序生成本地缓存是个非常糟糕的习惯,使用文件缓存速度缓慢、浪费磁盘空间、最重要一点是一般情况下服务器无法横向扩展

5、关闭php错误日志

display_errors = On 改为 display_errors = Off

程序一旦出现错误,详细错误信息便立刻展示到用户眼前,其中包含路径、有的甚至是数据库账号密码. 注入渗透密码基本上都是通过这个报错来猜取。生产环境上强烈关闭它

6、php上传分离 将文件上传到远程服务器,例如nfs等。当然也可以调用你们写好的php接口. 即使有上传漏洞,那么文件也被传到了静态服务器上。木马等文件根本无法执行.

例子: php站点www.xingzuo51.com,目录/data/site/www.xingzuo51.com 静态文件站点static.xingzuo51.com,目录/data/site/static.xingzuo51.com 文件直接被传到了/data/site/static.xingzuo51.com,上传的文件无法通过www.xingzuo51.com来访问,只能使用static.xingzuo51.com访问,但是static.xingzuo51.com不支持php.

7、关闭php信息

expose_php = On 改为 expose_php = Off

不轻易透露自己php版本信息,防止黑客针对这个版本的php发动攻击.

8、禁止动态加载链接库

disable_dl = On; 改为 enable_dl = Off;

9、禁用打开远程url

allow_url_fopen = On 改为 allow_url_fopen = Off

其实这点算不上真正的安全,并不会导致web被入侵等问题,但是这个非常影响性能, 笔者认为它属于狭义的安全问题.

以下方法将无法获取远程url内容

$data = file_get_contents("http://www.baidu.com/");

获取本地文件内容:

$data = file_get_contents("1.txt");

如果站点访问量不大、数据库也运行良好,但是web服务器负载出奇的高,请直接检查下是否有这个方法。

php获取远程web的内容,建议使用curl。



Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Arbeiten mit Flash -Sitzungsdaten in Laravel Arbeiten mit Flash -Sitzungsdaten in Laravel Mar 12, 2025 pm 05:08 PM

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Mar 14, 2025 am 11:42 AM

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Mar 12, 2025 pm 05:09 PM

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

12 Beste PHP -Chat -Skripte auf Codecanyon 12 Beste PHP -Chat -Skripte auf Codecanyon Mar 13, 2025 pm 12:08 PM

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

Erklären Sie das Konzept der späten statischen Bindung in PHP. Erklären Sie das Konzept der späten statischen Bindung in PHP. Mar 21, 2025 pm 01:33 PM

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu. Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu. Mar 28, 2025 pm 05:12 PM

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.

Rahmensicherheitsmerkmale: Schutz vor Schwachstellen. Rahmensicherheitsmerkmale: Schutz vor Schwachstellen. Mar 28, 2025 pm 05:11 PM

In Artikel werden wichtige Sicherheitsfunktionen in Frameworks erörtert, um vor Schwachstellen zu schützen, einschließlich Eingabevalidierung, Authentifizierung und regelmäßigen Aktualisierungen.

See all articles