熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

PHP網絡編程:小心SQL注入漏洞

2013-11-15 12:42:01  來源: PHP編程 
    ——此文章摘自《PHP網絡編程典型模塊與實例精講》定價 特價  詳細>>http://tracklinktechcn/?m_id=dangdang&a_id=A&l=&l_type= width= height= border= nosave>

  前面對客戶端提交的數據進行了截去頭尾空格然後判斷是否為空判斷密碼長度是否在有效范圍判斷Email的格式是否有效以及判斷用戶名是否重復等數據的有效性驗證是否這就足夠了呢?其實還有一個SQL注入漏洞的問題值得重視

  客戶端提交上來的數據往往被用於構造SQL語句使用這些構造出來的SQL語句訪問數據庫時會發生SQL注入攻擊所謂SQL注入即客戶端提交的數據用於構成了非法訪問數據庫的SQL語句

  為防止SQL注入漏洞一是要遵循最小權限的原則即賦予連接數據庫的用戶盡可能小(僅能執行預期的操作)的權限嚴禁使用特權用戶(如root);二是要盡可能地過濾由客戶端提交上來的可疑的非法數據

  假設在服務器端將執行如下SQL語句

http://developcsaicn/web/images/gif>

  這條SQL語句的本意是根據客戶端的要求刪除特定用戶但是如果一個不懷好意的訪問者知道服務器端的數據庫的用戶信息表的名稱而且提交了一個用戶名為 OR 的數據即$username = OR – –此時將上面這條SQL語句中的$username替換成提交上來的實際值後成為

http://developcsaicn/web/images/gif>

  由於刪除條件中的OR 結果表t_user中的記錄將被全部刪除

  要防范SQL注入漏洞實際上只要屏蔽一些SQL命令及關鍵字即可在進行服務器端的數據有效性驗證之前調用以下函數即可防止SQL注入漏洞

http://developcsaicn/web/images/gif>

  輸入以上代碼並將其保存成commonphp文件在需要驗證的頁面文件中只需要簡單地引用該文件即可引用的語法如下

http://developcsaicn/web/images/gif>

  在PHP中可以用來引入其他文件的關鍵字有 requirerequire_onceinclude和include_oncerequire和include以及require_once和 include_once之間的區別僅在於當要引用的文件不存在時使用require和require_once會導致一個致命錯誤而使用 include和include_once則僅產生一個警告後續的代碼仍會繼續執行另外require_once和include_once能夠確保僅對被包含的文件引用一次


From:http://tw.wingwit.com/Article/program/PHP/201311/21430.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.