国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison php教程 PHP開發(fā) 對php一些服務(wù)器端特性配置,加強php的安全

對php一些服務(wù)器端特性配置,加強php的安全

Dec 05, 2016 am 11:19 AM
linux nosql php php+mysql serveur php Serveur Web serveur de base de données

前面象Shaun Clowes和rfp等都比較詳細的介紹了php、cgi程序在編程過程中遇到 的問題,以及如何通過應(yīng)用程序漏洞突破系統(tǒng),這篇文章我們來通過對php的一些?
服務(wù)器端特性來進行配置加強php的安全。寫 cgi腳本的時候我們的確一定注意各種安全問題,對用戶輸入進行嚴格的過濾,但是常在岸邊走哪有不濕鞋 ,吃燒餅?zāi)挠?
不 掉芝麻,人有失蹄馬有失手,連著名的phpnuke、phpMyAdmin等程序都出現(xiàn)過很嚴重的 問題,更何況象我等小混混寫的腳本。所以現(xiàn)在我們假設(shè)php腳本已經(jīng)出現(xiàn)嚴重問題,比如象前一陣子 phpnuke的可以上傳php腳本的大問題了,我們?nèi)绾瓮ㄟ^對服務(wù)器的配置使腳本出現(xiàn)如此問題也不能突破 系統(tǒng)。?

1、編譯的時候注意補上已知的漏洞?

從4.0.5開始,php的mail函數(shù)加入了第五個參數(shù),但它沒有好好過濾,使得php 應(yīng)用程序能突破safe_mode的限制而去執(zhí)行命令。所以使用4.0.5和4.0.6的時候?
在編譯前我們需要修改php源碼包里 ext/standard/mail.c文件,禁止mail函數(shù)的第五參數(shù)或過濾shell字符。在mail.c 文件的第152行,也就是下面這行:?
if (extra_cmd != NULL) {?
后面加上extra_cmd=NULL;或extra_cmd = php_escape_shell_cmd(extra_cmd);?
然后編譯php,那么我們就修補了這個漏洞。?

2、修改php.ini配置文件?

以php發(fā)行版的php.ini-dist為藍本進行修改。?
1)Error handling and logging?
在Error handling and logging部分可以做一些設(shè)定。先找到:?
display_errors = On?
php缺省是打開錯誤信息顯示的,我們把它改為:?
display_errors = Off?

關(guān)閉錯誤顯示后,php函數(shù)執(zhí)行錯誤的信息將不會再顯示給用戶,這樣能在一定程度上防止攻擊者從錯誤信息得知腳本的物理位置,以及一些其它有用的信息,起碼給攻擊者的黑箱檢測造成一定的障礙 。這些錯誤信息可能對我們自己有用,可以讓它寫到指定文件中去,那么修改以下:?
log_errors = Off?
改為:?
log_errors = On?

以及指定文件,找到下面這行:?
;error_log = filename?
去掉前面的;注釋,把filename改為指定文件,如?
/usr/local/apache/logs/php_error.log?

error_log = /usr/local/apache/logs/php_error.log?
這樣所有的錯誤都會寫到php_error.log文件里。?

2)Safe Mode?

php的safe_mode功能對很多函數(shù)進行了限制或禁用了,能在很大程度解決php的安全問題。在Safe Mode部分找到:
safe_mode = Off?
改為:?
safe_mode = On?

這 樣就打開了safe_mode功能。象一些能執(zhí)行系統(tǒng)命令的函數(shù)shell_exec()和``被禁止,其它的一些執(zhí)行函數(shù)如:exec(), system(), passthru(), popen()將被限制只能執(zhí)行safe_mode_exec_dir指定目錄下的程序。如果你實在是要執(zhí)行一些命令或程序,找到以下:?
safe_mode_exec_dir =?
指定要執(zhí)行的程序的路徑,如:?
safe_mode_exec_dir = /usr/local/php/exec?

然后把要用的程序拷到/usr/local/php/exec目錄下,這樣,象上面的被限制的函數(shù)還能執(zhí)行該目錄里的程序。?

關(guān)于安全模式下受限函數(shù)的詳細信息請查看php主站的說明:?
[url]http://www.php.net/manual/en/features.safe-mode.php[/url]?

3)disable_functions?

如果你對一些函數(shù)的危害性不太清楚,而且也沒有使用,索性把這些函數(shù)禁止了。找到下面這行:?
disable_functions =?
在”=“后面加上要禁止的函數(shù),多個函數(shù)用“,”隔開。?

3、修改httpd.conf?

如果你只允許你的php腳本程序在web目錄里操作,還可以修改httpd.conf文件限制php的操作路徑。比如你的web目錄是/usr/local/apache/htdocs,那么在?
httpd.conf里加上這么幾行:?

?
php_admin_value open_basedir /usr/local/apache/htdocs
?

這樣,如果腳本要讀取/usr/local/apache/htdocs以外的文件將不會被允許,如果錯誤顯示打開的話?

會提示這樣的錯誤:?
Warning: open_basedir restriction in effect. File is in wrong directory in /usr/local/apache/htdocs/open.php on line 4 等等。?

4、對php代碼進行編譯?

Zend對php的貢獻很大,php4的引擎就是用Zend的,而且它還開發(fā)了ZendOptimizer和ZendEncode等許多php的加強組件。優(yōu)化器ZendOptimizer只需在?[url]http://www.zend.com[/url]注冊就可以免?... 直鴝雜詬髯緣南低常?/a>?

ZendOptimizer-1[1].1.0-PHP_4.0.5-FreeBSD4.0-i386.tar.gz?
ZendOptimizer-1[1].1.0-PHP_4.0.5-Linux_glibc21-i386.tar.gz?
ZendOptimizer-1[1].1.0-PHP_4.0.5-Solaris-sparc.tar.gz?
ZendOptimizer-1[1].1.0-PHP_4.0.5-Windows-i386.zip?


優(yōu)化器的安裝非常方便,包里面都有詳細的說明。以UNIX版本的為例,看清操作系統(tǒng),把包里的ZendOptimizer.so文件解壓到一個目錄,假設(shè)是/usr/local/lib?
下,在php.ini里加上兩句:?
zend_optimizer.optimization_level=15?
zend_extension="/usr/local/lib/ZendOptimizer.so"?

就可以了。用phpinfo()看到Zend圖標左邊有下面文字:?
with Zend Optimizer v1.1.0, Copyright (c) 1998-2000, by Zend Technologies?

那么,優(yōu)化器已經(jīng)掛接成功了。?
但是編譯器ZendEncode并不是免費的,這里提供給大家一個[url]http://www.PHPease.com[/url]的馬勇設(shè)計 ... 糜諫桃的康?,请?/a>?[url]http://www.zend.com[/url]聯(lián)系取得許可協(xié)議。?

php腳本編譯后,腳本的執(zhí)行速度增加不少,腳本文件只能看到一堆亂碼,這將阻止攻擊者進一步分析服務(wù)器上的腳本程序,而且原先在php腳本里以明文存儲的口令也得到了保密,如mysql的口令。不過在服務(wù)器端改腳本就比較麻煩了,還是本地改好再上傳吧。?


5、文件及目錄的權(quán)限設(shè)置?

web 目錄里除了上傳目錄,其它的目錄和文件的權(quán)限一定不能讓nobody用戶有寫 權(quán)限。否則,攻擊者可以修改主頁文件,所以web目錄的權(quán)限一定要設(shè)置好。還有,php腳本的屬主千萬不能是root,因為safe_mode下讀文件的 函數(shù)被限制成被讀文件的屬主必須和當前執(zhí)行腳本的屬主是一樣才能被讀,否則如果錯誤顯示打開的話會顯示諸如以下的錯誤:?

Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not allowed to access /etc/passwd owned by uid 0 in /usr/local/apache/htdocs/open.php on line 3?
這樣我們能防止許多系統(tǒng)文件被讀,比如:/etc/passwd等。?

上傳目錄和上傳腳本的屬主也要設(shè)成一樣,否則會出現(xiàn)錯誤的,在safe_mode下這些要注意。?

6、mysql的啟動權(quán)限設(shè)置?


mysql要注意的是不要用root來啟動,最好另外建一個mysqladm用戶??梢栽?/etc/rc.local等系統(tǒng)啟動腳本里加上一句:?
su mysqladm -c "/usr/local/mysql/share/mysql/mysql.server start"?

這樣系統(tǒng)重啟后,也會自動用mysqladmin用戶啟動mysql進程。?

7、日志文件及上傳目錄的審核及?

查看日志和人的惰性有很大關(guān)系,要從那么大的日志文件里查找攻擊痕跡有些大海撈針,而且也未必有。 web上傳的目錄里的文件,也應(yīng)該經(jīng)常檢查,也許程序有問題,用戶傳上了一些非法的文件,比如執(zhí)行腳本等。?

8、操作系統(tǒng)自身的補丁?

一樣,給系統(tǒng)打已知漏洞的補丁是系統(tǒng)管理員最基本的職責(zé),這也是最后一道防線。?


經(jīng)過以上的配置,雖然說不上固若金湯,但是也在相當程度上給攻擊者的測試造成很多麻煩,即使php腳本程序出現(xiàn)比較嚴重的漏洞,攻擊者也無法造成實際性的破壞。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276
Au-delà de la pile de lampe: le r?le de PHP dans l'architecture d'entreprise moderne Au-delà de la pile de lampe: le r?le de PHP dans l'architecture d'entreprise moderne Jul 27, 2025 am 04:31 AM

PhpisstillRelevantinmodernerterpriseenvironments.1.modernPhp (7.xand8.x) offre des performances, des stricts, un jitcompilation, et modernsyntax, rendant la main

Construire des microservices résilients avec PHP et Rabbitmq Construire des microservices résilients avec PHP et Rabbitmq Jul 27, 2025 am 04:32 AM

Pour construire un microservice PHP flexible, vous devez utiliser RabbitMQ pour obtenir une communication asynchrone, 1. Découplez le service via des files d'attente de messages pour éviter les défaillances en cascade; 2. Configurer des files d'attente persistantes, des messages persistants, une confirmation de libération et un ACK manuel pour assurer la fiabilité; 3. Utilisez des échecs de traitement de la sécurité de la file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente; 4. Utilisez des outils tels que SuperVisord pour protéger les processus de consommation et permettre des mécanismes de battements cardiaques pour assurer la santé des services; et finalement réaliser la capacité du système à opérer en continu en échecs.

Tigne de performance de cartographie relationnelle d'objet (ORM) dans PHP Tigne de performance de cartographie relationnelle d'objet (ORM) dans PHP Jul 29, 2025 am 05:00 AM

évitez N 1 Problèmes de requête, réduisez le nombre de requêtes de base de données en chargeant à l'avance des données associées; 2. Sélectionnez uniquement les champs requis pour éviter de charger des entités complètes pour enregistrer la mémoire et la bande passante; 3. Utilisez raisonnablement les stratégies de cache, telles que le cache secondaire de la doctrine ou les résultats de requête à haute fréquence de cache de Doctrine; 4. Optimisez le cycle de vie de l'entité et appelez régulièrement () pour libérer la mémoire pour empêcher le débordement de la mémoire; 5. Assurez-vous que l'indice de base de données existe et analysez les instructions SQL générées pour éviter les requêtes inefficaces; 6. Désactiver le suivi automatique des changements dans les scénarios où les modifications ne sont pas nécessaires et utilisez des tableaux ou des modes légers pour améliorer les performances. L'utilisation correcte de l'ORM nécessite de combiner la surveillance SQL, la mise en cache, le traitement par lots et l'optimisation appropriée pour garantir les performances de l'application tout en maintenant l'efficacité du développement.

Création d'environnements Docker prêts pour la production pour PHP Création d'environnements Docker prêts pour la production pour PHP Jul 27, 2025 am 04:32 AM

L'utilisation de l'image de base PHP correcte et la configuration d'un environnement Docker sécurisé et optimisé sont la clé pour obtenir la production prête. 1. Sélectionnez PHP: 8.3-FPM-Alpine comme image de base pour réduire la surface d'attaque et améliorer les performances; 2. Désactiver les fonctions dangereuses via PHP.ini personnalisé, désactiver l'affichage des erreurs et activer Opcache et Jit pour améliorer la sécurité et les performances; 3. Utilisez Nginx comme proxy inverse pour restreindre l'accès aux fichiers sensibles et transférer correctement les demandes PHP à PHP-FPM; 4. Utilisez des images d'optimisation en plusieurs étapes pour supprimer les dépendances de développement et configurez les utilisateurs non racinaires pour exécuter des conteneurs; 5. Supervisord facultatif pour gérer plusieurs processus tels que Cron; 6. Vérifiez qu'aucune fuite d'informations sensibles avant le déploiement

VSCODE Settings.json Emplacement VSCODE Settings.json Emplacement Aug 01, 2025 am 06:12 AM

Le fichier SetfitS.JSON est situé dans le chemin de niveau utilisateur ou au niveau de l'espace de travail et est utilisé pour personnaliser les paramètres VScode. 1. Chemin de niveau utilisateur: Windows est C: \ Users \\ AppData \ Roaming \ Code \ User \ Settings.json, macOS est /users//library/applicationsupport/code/user/settings.json, Linux est /home//.config/code/user/settings.json; 2. Chemin au niveau de l'espace de travail: .vscode / Paramètres dans le répertoire racine du projet

Une plongée profonde dans le mécanisme de collecte interne de PHP Une plongée profonde dans le mécanisme de collecte interne de PHP Jul 28, 2025 am 04:44 AM

Le mécanisme de collecte des ordures de PHP est basé sur le comptage de référence, mais les références circulaires doivent être traitées par un collecteur de déchets circulaires périodique; 1. Le nombre de références libère la mémoire immédiatement lorsqu'il n'y a pas de référence à la variable; 2. Référence La référence fait que la mémoire ne peut pas être automatiquement libérée, et cela dépend de GC pour le détecter et le nettoyer; 3. GC est déclenché lorsque la "racine possible" Zval atteint le seuil ou appelle manuellement gc_collect_cycles (); 4. Les applications PHP à long terme devraient surveiller GC_Status () et appeler GC_COLLECT_CYCLES () à temps pour éviter la fuite de mémoire; 5. Les meilleures pratiques incluent d'éviter les références circulaires, en utilisant gc_disable () pour optimiser les zones clés de performance et les objets de déréférence via la méthode Clear () d'Orm.

La révolution sans serveur: déploiement des applications PHP évolutives avec BREF La révolution sans serveur: déploiement des applications PHP évolutives avec BREF Jul 28, 2025 am 04:39 AM

BREF permet aux développeurs PHP de créer des applications évolutives et rentables sans gérer les serveurs. 1.BREF apporte PHP à Awslambda en fournissant une couche d'exécution PHP optimisée, prend en charge PHP8.3 et d'autres versions, et s'intègre de manière transparente à des frameworks tels que Laravel et Symfony; 2. Les étapes de déploiement incluent: l'installation de BREF à l'aide de composer, configurer Serverless.yml pour définir des fonctions et des événements, tels que les points de terminaison HTTP et les commandes artisanales; 3. Exécutez la commande ServerlessDeploy pour terminer le déploiement, configurez automatiquement Apigeway et générez des URL d'accès; 4. Pour les restrictions de lambda, BREF fournit des solutions.

Construire des objets immuables en PHP avec des propriétés en lecture Construire des objets immuables en PHP avec des propriétés en lecture Jul 30, 2025 am 05:40 AM

ReadonlypropertiesInphp8.2CanlybeassignedonceinthestrustructoratDeclarationandcannotBemodifiedAfterward, applicationmutabilityaThelanguageLevel.2.Toachievedeep-immutability, webutableTypeSlikEarrayinArrayobjectorUSustomymutability, webutilletypeslikearraysinarrayobjectoruseseCustomMutabeColEctionSucha.

See all articles