摘要:打開來防止注入注入是非常危險的問題,小則網站后臺被入侵,重則整個服務器淪陷,所以一定要小心。雖然國內很多程序員仍在依靠防止注入,還是建議大家加強中文防止注入的檢查。
1.
打開magic_quotes_gpc來防止SQL注入 SQL注入是非常危險的問題,小則網站后臺被入侵,重則整個服務器淪陷, 所以一定要小心。php.ini中有一個設置: magic_quotes_gpc = Off 這個默認是關閉的,如果它打開后將自動把用戶提交對sql的查詢進行轉換, 比如把 " 轉為 "等,這對防止sql注射有重大作用。所以我們推薦設置為: magic_quotes_gpc = On
(10) 錯誤信息控制 一般php在沒有連接到數據庫或者其他情況下會有提示錯誤,一般錯誤信息中會包含php腳本當 前的路徑信息或者查詢的SQL語句等信息,這類信息提供給黑客后,是不安全的,所以一般服務器建議禁止錯誤提示: display_errors = Off 如果你卻是是要顯示錯誤信息,一定要設置顯示錯誤的級別,比如只顯示警告以上的信息: error_reporting = E_WARNING & E_ERROR 當然,我還是建議關閉錯誤提示。
(11) 錯誤日志 建議在關閉display_errors后能夠把錯誤信息記錄下來,便于查找服務器運行的原因: log_errors = On 同時也要設置錯誤日志存放的目錄,建議根apache的日志存在一起: error_log = D:/usr/local/apache2/logs/php_error.log 注意:給文件必須允許apache用戶的和組具有寫的權限。 MYSQL的降權運行 新建立一個用戶比如mysqlstart net user mysqlstart fuckmicrosoft /add net localgroup users mysqlstart /del 不屬于任何組 如果MYSQL裝在d:mysql ,那么,給 mysqlstart 完全控制 的權限 然后在系統服務中設置,MYSQL的服務屬性,在登錄屬性當中,選擇此用戶 mysqlstart 然后輸入密碼,確定。 重新啟動 MYSQL服務,然后MYSQL就運行在低權限下了。 如果是在windos平臺下搭建的apache我們還需要注意一點,apache默認運行是system權限, 這很恐怖,這讓人感覺很不爽.那我們就給apache降降權限吧。 net user apache fuckmicrosoft /add net localgroup users apache /del ok.我們建立了一個不屬于任何組的用戶apche。 我們打開計算機管理器,選服務,點apache服務的屬性,我們選擇log on,選擇this account,我們填入上面所建立的賬戶和密碼, 重啟apache服務,ok,apache運行在低權限下了。 實際上我們還可以通過設置各個文件夾的權限,來讓apache用戶只能執行我們想讓它能干的事情,給每一個目錄建立一個多帶帶能讀寫的用戶。 這也是當前很多虛擬主機提供商的流行配置方法哦,不過這種方法用于防止這里就顯的有點大材小用了。
2
雖然國內很多PHP程序員仍在依靠addslashes防止SQL注入,還是建議大家加強中文防止SQL注入的檢查。addslashes的問題在于黑客可以用0xbf27來代替單引號,而addslashes只是將0xbf27修改為0xbf5c27,成為一個有效的多字節字符,其中的0xbf5c仍會被看作是單引號,所以addslashes無法成功攔截。 當然addslashes也不是毫無用處,它是用于單字節字符串的處理,多字節字符還是用mysql_real_escape_string吧 if (!get_magic_quotes_gpc()) { $lastname = addslashes($_POST[‘lastname’]); } else { $lastname = $_POST[‘lastname’]; } 最好對magic_quotes_gpc已經開放的情況下,還是對$_POST[’lastname’]進行檢查一下。 再說下mysql_real_escape_string和mysql_escape_string這2個函數的區別: mysql_real_escape_string 必須在(PHP 4 >= 4.3.0, PHP 5)的情況下才能使用。否則只能用 mysql_escape_string ,兩者的區別是:mysql_real_escape_string 考慮到連接的 當前字符集,而mysql_escape_string 不考慮。 總結一下: * addslashes() 是強行加; * mysql_real_escape_string() 會判斷字符集,但是對PHP版本有要求; * mysql_escape_string不考慮連接的當前字符集。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/23067.html
摘要:參考中如何防止注入參數化查詢為什么能夠防止注入上面提供的資料比較多,下面根據自己的理解整理出來。使用的預處理參數化查詢可以有效防止注入。我們在上面預處理參數化查詢是在中進行防注入操作的,其實也內置了一個預處理的模擬器,叫做。 由于segmentfault在處理特殊字符時也并非完美,所以下面文章中有些符號被轉換了,請到本人博客下載原文txt http://www.yunxi365.cn/...
摘要:預處理語句和參數分別發送到數據庫服務器進行解析,參數將會被當作普通字符處理。解析當你將語句發送給數據庫服務器進行預處理和解析時發生了什么通過指定占位符一個或者一個上面例子中命名的,告訴數據庫引擎你想在哪里進行過濾。 問題描述: 如果用戶輸入的數據在未經處理的情況下插入到一條SQL查詢語句,那么應用將很可能遭受到SQL注入攻擊,正如下面的例子: $unsafe_variable = $_...
閱讀 1785·2023-04-26 00:47
閱讀 1543·2021-11-11 16:55
閱讀 2597·2021-09-27 14:04
閱讀 3548·2021-09-22 15:58
閱讀 3554·2021-07-26 23:38
閱讀 2129·2019-08-30 13:47
閱讀 1979·2019-08-30 13:15
閱讀 1142·2019-08-29 17:09