PHP 安全性

一邢疙、apache server安全性設(shè)置

  1. 以Nobody用戶運(yùn)行
    一般情況下棍弄,Apache是由Root 來(lái)安裝和運(yùn)行的。如果Apache Server進(jìn)程具有Root用戶特權(quán)疟游,那么它將給系統(tǒng)的安全構(gòu)成很大的威脅呼畸,應(yīng)確保Apache Server進(jìn)程以最可能低的權(quán)限用戶來(lái)運(yùn)行。通過(guò)修改httpd.conf文件中的下列選項(xiàng)颁虐,以Nobody用戶運(yùn)行Apache 達(dá)到相對(duì)安全的目的蛮原。
User nobody
Group# -1

2.ServerRoot目錄的權(quán)限
為了確保所有的配置是適當(dāng)?shù)暮桶踩模枰獓?yán)格控制Apache 主目錄的訪問(wèn)權(quán)限另绩,使非超級(jí)用戶不能修改該目錄中的內(nèi)容儒陨。Apache 的主目錄對(duì)應(yīng)于Apache Server配置文件httpd.conf的Server Root控制項(xiàng)中,應(yīng)為:

Server Root /usr/local/apache

3.SSI的配置
在配置文件access.conf 或httpd.conf中的確Options指令處加入Includes NO EXEC選項(xiàng)笋籽,用以禁用Apache Server 中的執(zhí)行功能蹦漠。避免用戶直接執(zhí)行Apache 服務(wù)器中的執(zhí)行程序,而造成服務(wù)器系統(tǒng)的公開(kāi)化干签。

Options Includes Noexec

4.阻止用戶修改系統(tǒng)設(shè)置
在Apache 服務(wù)器的配置文件中進(jìn)行以下的設(shè)置津辩,阻止用戶建立、修改 .htaccess文件容劳,防止用戶超越能定義的系統(tǒng)安全特性喘沿。

AllowOveride None
Options None
Allow from all

5.改變Apache 服務(wù)器的缺省訪問(wèn)特性
Apache 的默認(rèn)設(shè)置只能保障一定程度的安全,如果服務(wù)器能夠通過(guò)正常的映射規(guī)則找到文件竭贩,那么客戶端便會(huì)獲取該文件蚜印,如http://local host/~ root/ 將允許用戶訪問(wèn)整個(gè)文件系統(tǒng)。在服務(wù)器文件中加入如下內(nèi)容:

order deny,ellow
Deny from all

6.CGI腳本的安全考慮
CGI腳本是一系列可以通過(guò)Web服務(wù)器來(lái)運(yùn)行的程序留量。為了保證系統(tǒng)的安全性窄赋,應(yīng)確保CGI的作者是可信的。對(duì)CGI而言楼熄,最好將其限制在一個(gè)特定的目 錄下忆绰,如cgi-bin之下,便于管理可岂;另外應(yīng)該保證CGI目錄下的文件是不可寫(xiě)的错敢,避免一些欺騙性的程序駐留或混跡其中;如果能夠給用戶提供一個(gè)安全性 良好的CGI程序的模塊作為參考缕粹,也許會(huì)減少許多不必要的麻煩和安全隱患稚茅;除去CGI目錄下的所有非業(yè)務(wù)應(yīng)用的腳本,以防異常的信息泄漏平斩。

二亚享、PHP安全性設(shè)置

1、程序代碼漏洞問(wèn)題
很多 PHP 程序所存在的重大弱點(diǎn)并不是 PHP 語(yǔ)言本身的問(wèn)題绘面,而是編程者的安全意識(shí)不高而導(dǎo)致的欺税。因此,必須時(shí)時(shí)注意每一段代碼可能存在的問(wèn)題揭璃,去發(fā)現(xiàn)非正確數(shù)據(jù)提交時(shí)可能造成的影響晚凿。

<?php 
    unlink ($evil_var); 
    fwrite ($fp, $evil_var); 
    system ($evil_var); 
    exec ($evil_var); 
?> 

2、用戶輸入表單問(wèn)題
驗(yàn)證用戶輸入的任何數(shù)據(jù)塘辅,保證PHP代碼的安全晃虫。
注意1:JS只是為了提高來(lái)訪用戶的體驗(yàn)而產(chǎn)生的,而不是驗(yàn)證的工具扣墩。因?yàn)槿魏我粋€(gè)來(lái)訪的用戶都可能會(huì)哲银,也有可能無(wú)意間就禁用了客戶端腳本的執(zhí)行,從而跳過(guò)這層驗(yàn)證呻惕。所以我們必須在PHP的服務(wù)器端程序上檢驗(yàn)這些數(shù)據(jù)荆责。
注意2:不要使用$_SERVER[‘HTTP_REFERER’]這個(gè)超級(jí)變量來(lái)檢查數(shù)據(jù)的來(lái)源地址,一個(gè)很小的菜鳥(niǎo)黑客都會(huì)利用工具來(lái)偽造這個(gè)變量的數(shù)據(jù)亚脆,盡可能利用Md5做院,或者rand等函數(shù)來(lái)產(chǎn)生一個(gè)令牌,驗(yàn)證來(lái)源的時(shí)候,驗(yàn)證這個(gè)令牌是否匹配键耕。
3寺滚、PHP文件權(quán)限問(wèn)題
PHP 被設(shè)計(jì)為以用戶級(jí)別來(lái)訪問(wèn)文件系統(tǒng),所以完全有可能通過(guò)編寫(xiě)一段 PHP 代碼來(lái)讀取系統(tǒng)文件如 /etc/passwd屈雄,更改網(wǎng)絡(luò)連接以及發(fā)送大量打印任務(wù)等等村视。因此必須確保 PHP 代碼讀取和寫(xiě)入的是合適的文件。
4酒奶、隱藏PHP擴(kuò)展名
一般而言蚁孔,通過(guò)隱藏的手段提高安全性被認(rèn)為是作用不大的做法。但某些情況下惋嚎,盡可能的多增加一份安全性都是值得的杠氢。
一些簡(jiǎn)單的方法可以幫助隱藏 PHP,這樣做可以提高攻擊者發(fā)現(xiàn)系統(tǒng)弱點(diǎn)的難度另伍。在 php.ini 文件里設(shè)置 expose_php = off 鼻百,可以減少他們能獲得的有用信息。
另一個(gè)策略就是讓 web 服務(wù)器用 PHP 解析不同擴(kuò)展名质况。無(wú)論是通過(guò) .htaccess 文件還是 Apache 的配置文件愕宋,都可以設(shè)置能誤導(dǎo)攻擊者的文件擴(kuò)展名:
1、使PHP看上去像其它的編程語(yǔ)言
AddType application/x-httpd-php .asp .py .pl
2结榄、使 PHP 看上去像未知的文件類型
AddType application/x-httpd-php .bop .foo .133t
3中贝、使 PHP 代碼看上去像HTML頁(yè)面
AddType application/x-httpd-php .htm .html

三、Mysql數(shù)據(jù)庫(kù)安全性設(shè)置

1臼朗、數(shù)據(jù)庫(kù)設(shè)計(jì)問(wèn)題
應(yīng)用程序永遠(yuǎn)不要使用數(shù)據(jù)庫(kù)所有者或超級(jí)用戶帳號(hào)來(lái)連接數(shù)據(jù)庫(kù)邻寿,因?yàn)檫@些帳號(hào)可以執(zhí)行任意的操作,比如說(shuō)修改數(shù)據(jù)庫(kù)結(jié)構(gòu)(例如刪除一個(gè)表)或者清空整個(gè)數(shù)據(jù)庫(kù)的內(nèi)容视哑。
2.數(shù)據(jù)庫(kù)連接問(wèn)題
把連接建立在 SSL 加密技術(shù)上可以增加客戶端和服務(wù)器端通信的安全性绣否,或者 SSH 也可以用于加密客戶端和數(shù)據(jù)庫(kù)之間的連接。如果使用了這些技術(shù)的話挡毅,攻擊者要監(jiān)視服務(wù)器的通信或者得到數(shù)據(jù)庫(kù)的信息是很困難的蒜撮。
3.數(shù)據(jù)庫(kù)數(shù)據(jù)的加密
SSL/SSH 能保護(hù)客戶端和服務(wù)器端交換的數(shù)據(jù),但 SSL/SSH 并不能保護(hù)數(shù)據(jù)庫(kù)中已有的數(shù)據(jù)跪呈。SSL 只是一個(gè)加密網(wǎng)絡(luò)數(shù)據(jù)流的協(xié)議段磨。
如果攻擊者取得了直接訪問(wèn)數(shù)據(jù)庫(kù)的許可(繞過(guò) web 服務(wù)器),敏感數(shù)據(jù)就可能暴露或者被濫用耗绿,除非數(shù)據(jù)庫(kù)自己保護(hù)了這些信息苹支。對(duì)數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù)加密是減少這類風(fēng)險(xiǎn)的有效途徑,但是只有很少的數(shù)據(jù)庫(kù)提供這些加密功能误阻。
對(duì)于這個(gè)問(wèn)題债蜜,有一個(gè)簡(jiǎn)單的解決辦法晴埂,就是創(chuàng)建自己的加密機(jī)制,然后把它用在 PHP 程序內(nèi)寻定,最常見(jiàn)的例子就是把密碼經(jīng)過(guò) MD5 加密后的散列存進(jìn)數(shù)據(jù)庫(kù)來(lái)代替原來(lái)的明文密碼儒洛。

<?php 
$query = sprintf("INSERT INTO users(name,pwd) VALUES('%s','%s');", 
addslashes($username), md5($password)); 
$result = pg_query($connection, $query); 
$query = sprintf("SELECT 1 FROM users WHERE name='%s' AND pwd='%s';", 
addslashes($username), md5($password)); 
$result = pg_query($connection, $query); 
if (pg_num_rows($result) > 0) { 
echo 'Welcome, $username!'; 
} else { 
echo 'Authentication failed for $username.'; 
} 
?>

4、SQL注入問(wèn)題
直接 SQL 命令注入就是攻擊者常用的一種創(chuàng)建或修改已有 SQL 語(yǔ)句的技術(shù)特姐,從而達(dá)到取得隱藏?cái)?shù)據(jù)晶丘,或覆蓋關(guān)鍵的值黍氮,甚至執(zhí)行數(shù)據(jù)庫(kù)主機(jī)操作系統(tǒng)命令的目的唐含。這是通過(guò)應(yīng)用程序取得用戶輸入并與靜態(tài)參數(shù)組合成 SQL 查詢來(lái)實(shí)現(xiàn)的。

<?php 
$query = "SELECT id, name, inserted, size FROM products 
WHERE size = '$size' 
ORDER BY $order LIMIT $limit, $offset;"; 
$result = odbc_exec($conn, $query); 
?>

可以在原來(lái)的查詢的基礎(chǔ)上添加另一個(gè) SELECT 查詢來(lái)獲得密碼: union select ‘1’, concat(uname||’-‘||passwd) as name, ‘1971-01-01’, ‘0’ from usertable; 假如上述語(yǔ)句(使用 ‘ 和 –)被加入到 $query 中的任意一個(gè)變量的話沫浆,那么就麻煩了捷枯。
這些攻擊總是建立在發(fā)掘安全意識(shí)不強(qiáng)的代碼上的。所以专执,永遠(yuǎn)不要信任外界輸入的數(shù)據(jù)淮捆,特別是來(lái)自于客戶端的,包括選擇框本股、表單隱藏域和 cookie攀痊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市拄显,隨后出現(xiàn)的幾起案子苟径,更是在濱河造成了極大的恐慌,老刑警劉巖躬审,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棘街,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡承边,警方通過(guò)查閱死者的電腦和手機(jī)遭殉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)博助,“玉大人险污,你說(shuō)我怎么就攤上這事「辉溃” “怎么了蛔糯?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)城瞎。 經(jīng)常有香客問(wèn)我渤闷,道長(zhǎng),這世上最難降的妖魔是什么脖镀? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任飒箭,我火速辦了婚禮狼电,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘弦蹂。我一直安慰自己肩碟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布凸椿。 她就那樣靜靜地躺著削祈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪脑漫。 梳的紋絲不亂的頭發(fā)上髓抑,一...
    開(kāi)封第一講書(shū)人閱讀 49,071評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音优幸,去河邊找鬼吨拍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛网杆,可吹牛的內(nèi)容都是我干的羹饰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼碳却,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼队秩!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起昼浦,我...
    開(kāi)封第一講書(shū)人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤馍资,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后座柱,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體迷帜,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年色洞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了戏锹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡火诸,死狀恐怖锦针,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情置蜀,我是刑警寧澤奈搜,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站盯荤,受9級(jí)特大地震影響馋吗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜秋秤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一宏粤、第九天 我趴在偏房一處隱蔽的房頂上張望脚翘。 院中可真熱鬧,春花似錦绍哎、人聲如沸来农。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)沃于。三九已至,卻和暖如春海诲,著一層夾襖步出監(jiān)牢的瞬間繁莹,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工饿肺, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蒋困,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓敬辣,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親零院。 傳聞我的和親對(duì)象是個(gè)殘疾皇子溉跃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容