PHP安全性漫談分享

本文所討論的安全性環境是在Linux+Apache+Mysql+PHP。超出此範圍的安全性問題不在本文範疇以內 1、apache server安全性設置 

一、以Nobody用戶運行 

通常狀況下,Apache是由Root 來安裝和運行的。若是Apache Server進程具備Root用戶特權,那麼它將給系統的安全構成很大的威脅,應確保Apache Server進程以最可能低的權限用戶來運行。經過修改httpd.conf文件中的下列選項,以Nobody用戶運行Apache 達到相對安全的目的。 
User nobody 
Group# -1 

二、ServerRoot目錄的權限 

爲了確保全部的配置是適當的和安全的,須要嚴格控制Apache 主目錄的訪問權限,使非超級用戶不能修改該目錄中的內容。Apache 的主目錄對應於Apache Server配置文件httpd.conf的Server Root控制項中,應爲: 
Server Root /usr/local/apache 

三、SSI的配置 

在配置文件access.conf 或httpd.conf中的確Options指令處加入Includes NO EXEC
IIS7-VPS大全選項,用以禁用Apache Server 中的執行功能。避免用戶直接執行Apache 服務器中的執行程序,而形成服務器系統的公開化。 
php


Options Includes Noexec 


四、阻止用戶修改系統設置 

在Apache 服務器的配置文件中進行如下的設置,阻止用戶創建、修改 .htaccess文件,防止用戶超越能定義的系統安全特性。 

AllowOveride None 
Options None 
Allow from all 

而後再分別對特定的目錄進行適當的配置。 

五、改變Apache 服務器的缺省訪問特性 

Apache 的默認設置只能保障必定程度的安全,若是服務器可以經過正常的映射規則找到文件,那麼客戶端便會獲取該文件,如http://local host/~ root/ 將容許用戶訪問整個文件系統。在服務器文件中加入以下內容: 

order deny,ellow 
Deny from all 

將禁止對文件系統的缺省訪問。 

六、CGI腳本的安全考慮 

CGI腳本是一系列能夠經過Web服務器來運行的程序。爲了保證系統的安全性,應確保CGI的做者是可信的。對CGI而言,最好將其限制在一個特定的目 錄下,如cgi-bin之下,便於管理;另外應該保證CGI目錄下的文件是不可寫的,避免一些欺騙性的程序駐留或混跡其中;若是可以給用戶提供一個安全性 良好的CGI程序的模塊做爲參考,也許會減小許多沒必要要的麻煩和安全隱患;除去CGI目錄下的全部非業務應用的腳本,以防異常的信息泄漏。 

七、SSL連接加密 

以上這些經常使用的舉措能夠給Apache Server 一個基本的安全運行環境,顯然在具體實施上還要作進一步的細化分解,制定出符合實際應用的安全配置方案。 

2、PHP安全性設置 

服務器並不能阻止全部的安全問題,例如程序漏洞問題、用戶輸入表單問題、PHP文件權限問題等。 
也能夠經過一些手段來迷惑黑客或者別有用心者。 
一、程序代碼漏洞問題 

不少 PHP 程序所存在的重大弱點並非 PHP 語言自己的問題,而是編程者的安全意識不高而致使的。所以,必須時時注意每一段代碼可能存在的問題,去發現非正確數據提交時可能形成的影響。 
複製代碼 代碼以下: 
<?php 
unlink ($evil_var); 
fwrite ($fp, $evil_var); 
system ($evil_var); 
exec ($evil_var); 
?> 

必須時常留意你的代碼,以確保每個從客戶端提交的變量都通過適當的檢查,而後問本身如下一些問題: 

此腳本是否只能影響所預期的文件? 
非正常的數據被提交後可否產生做用? 
此腳本能用於計劃外的用途嗎? 
此腳本可否和其它腳本結合起來作壞事? 
是否全部的事務都被充分記錄了? 
在寫代碼的時候問本身這些問題,不然之後可能要爲了增長安全性而重寫代碼了。注意了這些問題的話,也許還不徹底能保證系統的安全,可是至少能夠提升安全性。
sql

相關文章
相關標籤/搜索