国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php通用防注入與注入詳細說明

2024-05-04 21:58:52
字體:
來源:轉載
供稿:網友

php通用防注入主要是過濾一些sql命令與php post get傳過來的參考我們/要過濾一些非法字符,這樣可以防止基本的注入了,那關第于apache 服務器安裝設置方法也是必須的,管理員用戶名和密碼都采取md5加密,這樣就能有效地防止了php的注入.

還有服務器和mysql教程也要加強一些安全防范.

對于linux服務器的安全設置:

加密口令,使用“/usr/sbin/authconfig”工具打開密碼的shadow功能,對password進行加密,禁止訪問重要文件,進入linux命令界面,在提示符下輸入:

  1. #chmod 600 /etc/inetd.conf    //改變文件屬性為600 
  2. #chattr +i  /etc/inetd.conf     //保證文件屬主為root 
  3. #chattr –i  /etc/inetd.conf     // 對該文件的改變做限制   

禁止任何用戶通過su命令改變為root用戶,在su配置文件即/etc/pam.d/目錄下的開頭添加下面兩行:

auth  sufficient  /lib/security/pam_rootok.so debug

auth  required  /lib/security/pam_whell.so group=wheel

刪除所有的特殊帳戶

#userdel  lp等等 刪除用戶

#groupdel lp等等  刪除組

禁止不使用的suid/sgid程序

#find / -type f (-perm -04000  - o –perm -02000 ) -execls –lg {};代碼如下:

  1. $arrfiltrate=array("'",";","union","select","insert","update","delete","load_file","outfile");   
  2.  //出錯后要跳轉的url 
  3. $strgourl="";   
  4. //開源代碼Vevb.com 
  5. function funstringexist($strfiltrate,$arrfiltrate
  6.   foreach ($arrfiltrate as $key=>$value
  7.   { 
  8.     if (eregi($value,$strfiltrate)) 
  9.     { 
  10.       return true; 
  11.     } 
  12.   } 
  13.   return false; 
  14.  
  15. //合并$_post 、 $_get和$_cookie 
  16.  
  17. if(function_exists(array_merge))     
  18.   $arrpostgetcookiesession=array_merge($http_post_vars,$http_get_vars,$http_cookie_vars);   
  19.   $string = implode("",$arrpostgetcookiesession); 
  20. }  
  21.  
  22. //驗證 
  23.  
  24. if(funstringexist($string,$arrfiltrate)) 
  25.   echo "<script language="javascript">alert("提示,非法字符");</script>"
  26. else 
  27.   echo "<script language="javascript">window.location="".$strgourl."";</script>"
  28. }  
第二款防注入實例,代碼如下:

php通用防注入安全代碼.

說明:判斷傳遞的變量中是否含有非法字符,如$_post、$_get

功能:防注入.

  1. //要過濾的非法字符 
  2. $arrfiltrate=array("'",";","union"); 
  3. //出錯后要跳轉的url,不填則默認前一頁 
  4. $strgourl=""
  5. //是否存在數組中的值 
  6. function funstringexist($strfiltrate,$arrfiltrate){ 
  7. foreach ($arrfiltrate as $key=>$value){ 
  8. if (eregi($value,$strfiltrate)){ 
  9. return true; 
  10. return false; 
  11. //合并$_post 和 $_get 
  12. if(function_exists(array_merge)){ 
  13. $arrpostandget=array_merge($http_post_vars,$http_get_vars); 
  14. }else
  15. foreach($http_post_vars as $key=>$value){ 
  16. $arrpostandget[]=$value
  17. foreach($http_get_vars as $key=>$value){ 
  18. $arrpostandget[]=$value
  19. //驗證開始 
  20. foreach($arrpostandget as $key=>$value){ 
  21. if (funstringexist($value,$arrfiltrate)){ 
  22. echo "alert(/"neeao提示,非法字符/");"
  23. if (emptyempty($strgourl)){ 
  24. echo "history.go(-1);"
  25. }else
  26. echo "window.location=/"".$strgourl."/";"
  27. exit

看一下關于注入細節.

轉化成ascii后是char(97,108,112,104,97),轉化成16進制是0x616c706861,我們將在光盤中提供16進制和ascii轉換工具,好了直接在瀏覽器里輸入:

http://localhost/site/admin/login.php?username=char(97,108,112,104,97)%23 

sql語句變成:

select * from alphaaut hor where username=char(97,108,112,104,97)# and password=

正如我們期望的那樣,他順利執行了,我們得到我們想要的,當然咯,我們也可以這樣構造:

http://m.survivalescaperooms.com/site/admin/login.php?username=0x616c706861%23 

sql語句變成:

select * from alphaauthor where username=0x616c706861%23# and password= 

我們再一次是成功者了,很有成就感吧,或許你會問我們是否可以把#也放在char()里,實際上char(97,108,112,104,97)相當于 alpha,注意是alpha上加引號,表示alpha字符串,我們知道在mysql中如果執行如下代碼:

mysql> select * from dl_users where username=alpha;error 1054 (42s22): unknown column alpha in where clause 

看返回錯誤了,因為他會認為alpha是一個變量,所以我們得在alpha上加引號,代碼如下:

mysql> select * from dl_users where username= alpha ;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 忻州市| 景谷| 同江市| 阿瓦提县| 大庆市| 广汉市| 阿克陶县| 襄樊市| 奉化市| 双辽市| 德安县| 陆河县| 黔西县| 青川县| 吉林市| 忻州市| 临桂县| 江永县| 达拉特旗| 涞水县| 犍为县| 陵川县| 胶南市| 大厂| 蕲春县| 吴旗县| 抚顺市| 鄂托克旗| 海淀区| 互助| 岗巴县| 广水市| 藁城市| 称多县| 新丰县| 伊金霍洛旗| 庆阳市| 本溪市| 马边| 齐齐哈尔市| 宜州市|