今天小編給大家分享的是關(guān)于PHP安全編程建議的詳細(xì)介紹,相信大部分人都不太了解,為了讓大家更加了解,所以給大家總結(jié)了以下內(nèi)容,話不多說,一起往下看吧。
洞口網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)建站2013年至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。簡介
要提供互聯(lián)網(wǎng)服務(wù),當(dāng)你在開發(fā)代碼的時候必須時刻保持安全意識。可能大部分 PHP 腳本都對安全問題不在意,這很大程度上是因為有大量的無經(jīng)驗程序員在使用這門語言。但是,沒有理由讓你因為對你的代碼的不確定性而導(dǎo)致不一致的安全策略。當(dāng)你在服務(wù)器上放任何涉及到錢的東西時,就有可能會有人嘗試破解它。創(chuàng)建一個論壇程序或者任何形式的購物車,被攻擊的可能性就上升到了無窮大。
背景
為了確保你的 web 內(nèi)容安全,這里有一些常規(guī)的安全準(zhǔn)則:
1、別相信表單
攻擊表單很簡單。通過使用一個簡單的 JavaScript 技巧,你可以限制你的表單只允許在評分域中填寫 1 到 5 的數(shù)字。如果有人關(guān)閉了他們?yōu)g覽器的 JavaScript 功能或者提交自定義的表單數(shù)據(jù),你客戶端的驗證就失敗了。
用戶主要通過表單參數(shù)和你的腳本交互,因此他們是大的安全風(fēng)險。你應(yīng)該學(xué)到什么呢?在 PHP 腳本中,總是要驗證 傳遞給任何 PHP 腳本的數(shù)據(jù)。在本文中,我們向你演示了如何分析和防范跨站腳本(XSS)攻擊,它可能會劫持用戶憑據(jù)(甚至更嚴(yán)重)。你也會看到如何防止會玷污或毀壞你數(shù)據(jù)的 MySQL 注入攻擊。
2、別相信用戶
假定你網(wǎng)站獲取的每一份數(shù)據(jù)都充滿了有害的代碼。清理每一部分,即便你相信沒有人會嘗試攻擊你的站點。
3、關(guān)閉全局變量
你可能會有的大安全漏洞是啟用了 register_globals
配置參數(shù)。幸運的是,PHP 4.2 及以后版本默認(rèn)關(guān)閉了這個配置。如果打開了 register_globals
,你可以在你的 php.ini 文件中通過改變 register_globals
變量為 Off 關(guān)閉該功能:
register_globals = Off
新手程序員覺得注冊全局變量很方便,但他們不會意識到這個設(shè)置有多么危險。一個啟用了全局變量的服務(wù)器會自動為全局變量賦任何形式的參數(shù)。為了了解它如何工作以及為什么有危險,讓我們來看一個例子。
假設(shè)你有一個稱為 process.php
的腳本,它會向你的數(shù)據(jù)庫插入表單數(shù)據(jù)。初始的表單像下面這樣:
運行 process.php
的時候,啟用了注冊全局變量的 PHP 會將該參數(shù)賦值到 $username
變量。這會比通過$_POST['username']
或 $_GET['username']
訪問它節(jié)省擊鍵次數(shù)。不幸的是,這也會給你留下安全問題,因為 PHP 會設(shè)置該變量的值為通過 GET 或 POST 的參數(shù)發(fā)送到腳本的任何值,如果你沒有顯示地初始化該變量并且你不希望任何人去操作它,這就會有一個大問題。
看下面的腳本,假如 $authorized
變量的值為 true,它會給用戶顯示通過驗證的數(shù)據(jù)。正常情況下,只有當(dāng)用戶正確通過了這個假想的 authenticated_user()
函數(shù)驗證,$authorized
變量的值才會被設(shè)置為真。但是如果你啟用了 register_globals
,任何人都可以發(fā)送一個 GET 參數(shù),例如 authorized=1
去覆蓋它:
這個故事的寓意是,你應(yīng)該從預(yù)定義的服務(wù)器變量中獲取表單數(shù)據(jù)。所有通過 post 表單傳遞到你 web 頁面的數(shù)據(jù)都會自動保存到一個稱為 $_POST
的大數(shù)組中,所有的 GET 數(shù)據(jù)都保存在 $_GET
大數(shù)組中。文件上傳信息保存在一個稱為 $_FILES
的特殊數(shù)據(jù)中。另外,還有一個稱為 $_REQUEST
的復(fù)合變量。
要從一個 POST 方法表單中訪問username字段,可以使用 $_POST['username']
。如果 username 在 URL 中就使用$_GET['username']
。如果你不確定值來自哪里,用 $_REQUEST['username']
。
$_REQUEST
是 $_GET
、$_POST
、和 $_COOKIE
數(shù)組的結(jié)合。如果你有兩個或多個值有相同的參數(shù)名稱,注意 PHP 會使用哪個。默認(rèn)的順序是 cookie
、POST
、然后是 GET
。
關(guān)于PHP安全編程的建議就分享到這里了,希望以上內(nèi)容可以對大家有一定的參考價值,可以學(xué)以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。