php防注入及開發(fā)安全詳細(xì)解析
1、PHP注入的基本原理
程序員的水平及經(jīng)驗(yàn)也參差不齊,相當(dāng)大一部分程序員在編寫代碼的時(shí)候,沒有對(duì) 用戶輸入數(shù)據(jù)的合法性進(jìn)行判斷,使應(yīng)用程序存在安全隱患。用戶可以提交一段數(shù)據(jù) 庫查詢代碼,根據(jù)程序返回的結(jié)果,獲得某些他想得知的數(shù)據(jù),這就是所謂的 SQL Injection,即SQL注入。 受影響的系統(tǒng):對(duì)輸入的參數(shù)不進(jìn)行檢查和過濾的系統(tǒng).
SQL注入過程
正常來講,我們通過地址接收一些必要的參數(shù)如:
頁面中我們會(huì)使用 2 寫入到SQL語句中
正常情況:Select * From Table where id=2
PHP100.php?id=2
如果我們對(duì)SQL語句熟悉,就知道2 我們可以替換成我們需要的SQL語句
如:and exists (select id from admin)
2、防止注入的幾種辦法
其實(shí)原來就是我們需要過濾一些我們常見的關(guān)鍵字和符合如:
Select,insert,update,delete,and,*,等等
例子:
function inject_check($sql_str) {
return preg_match('/select|insert|update|delete|/'|///*|/*|/././/|/.//|union|into|load_file|outfile/i', $sql_str); // 進(jìn)行過濾
}
或者是通過系統(tǒng)函數(shù)間的過濾特殊符號(hào)
Addslashes(需要被過濾的內(nèi)容)
3、PHP其他地方安全設(shè)置
register_globals = Off 設(shè)置為關(guān)閉狀態(tài)
SQL語句書寫時(shí)盡量不要省略小引號(hào)和單引號(hào)
Select * From Table Where id=2 (不規(guī)范)
Select * From ·Table· Where ·id·='2' (規(guī)范)
提高數(shù)據(jù)庫命名技巧,對(duì)于一些重要的字段可根據(jù)程序特點(diǎn)命名
對(duì)于常用方法加以封裝,避免直接暴露SQL語句
正確的使用 $_POST $_GET $_SESSION 等接受參數(shù),并加以過濾
相關(guān)文章
微信公眾平臺(tái)開發(fā)教程④ ThinkPHP框架下微信支付功能圖文詳解
這篇文章主要介紹了微信公眾平臺(tái)開發(fā)ThinkPHP框架下微信支付功能,結(jié)合圖文形式詳細(xì)分析了基于thinkPHP框架的微信支付功能實(shí)現(xiàn)步驟、操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2019-04-04PHP MVC框架中類的自動(dòng)加載機(jī)制實(shí)例分析
這篇文章主要介紹了PHP MVC框架中類的自動(dòng)加載機(jī)制,結(jié)合實(shí)例形式分析了MVC框架中類的自動(dòng)加載機(jī)制原理、實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-09-09php 實(shí)現(xiàn)進(jìn)制相互轉(zhuǎn)換
最近的項(xiàng)目中需要用到進(jìn)制轉(zhuǎn)換,這個(gè)問題在剛剛接觸計(jì)算機(jī)理論時(shí)候,還是很會(huì)的,好久不用,居然模糊了……2016-04-04linux php mysql數(shù)據(jù)庫備份實(shí)現(xiàn)代碼
想在PHP后臺(tái)管理直接能夠備份數(shù)據(jù)庫,于是想呀想,一直沒有什么思路,一開始是考慮用php來訪問服務(wù)器安裝mysql的目錄,比如 /usr/local/mysql/data目錄,直接把下面對(duì)應(yīng)的文件進(jìn)行備份2009-03-03PHP+MySQL+sphinx+scws實(shí)現(xiàn)全文檢索功能詳解
這篇文章主要介紹了PHP+MySQL+sphinx+scws實(shí)現(xiàn)全文檢索功能,詳細(xì)分析了sphinx、scws的下載安裝、配置、數(shù)據(jù)庫創(chuàng)建及全文檢索功能的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-08-08php有序列表或數(shù)組中刪除指定的值的實(shí)現(xiàn)代碼
這篇文章主要介紹了php有序列表或數(shù)組中刪除指定的值的實(shí)現(xiàn)代碼,刪除給定的值之后,得到一個(gè)新的有序列表,長度-1,下面是具體的實(shí)現(xiàn)方法2021-08-08PHP輸出兩個(gè)數(shù)字中間有多少個(gè)回文數(shù)的方法
這篇文章主要介紹了PHP輸出兩個(gè)數(shù)字中間有多少個(gè)回文數(shù)的方法,實(shí)例分析了回文數(shù)的概念與相關(guān)判斷技巧,需要的朋友可以參考下2015-03-03探討Smarty中如何獲取數(shù)組的長度以及smarty調(diào)用php函數(shù)的詳解
本篇文章是對(duì)Smarty中如何獲取數(shù)組的長度以及smarty調(diào)用php函數(shù)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06