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

首頁 > 開發 > PHP > 正文

php 參數過濾、數據過濾詳解

2024-05-04 23:39:48
字體:
來源:轉載
供稿:網友

這篇文章給大家介紹php參數過濾及php數據過濾,包括php提交數據過濾的基本原則,php簡單的數據過濾,感興趣的朋友一起學習吧

下面通過一段代碼給大家介紹php參數過濾

 

 
  1. class mysafe{ 
  2. public $logname
  3. public $isshwomsg
  4. function __construct(){  
  5. set_error_handler('MyError',E_ALL);  
  6. //----- 
  7. function MyError($errno$errstr$errfile$errline){  
  8. echo "<b>Error number:</b> [$errno],error on line $errline in $errfile<br />"
  9. exit
  10. function wlog($logs){ 
  11. if(emptyempty($logname)){ 
  12. $this->logname=$_SERVER["DOCUMENT_ROOT"]."/log.htm"
  13. }  
  14. $Ts=fopen($this->logname,"a+"); 
  15. fputs($Ts,$logs."/r/n"); 
  16. fclose($Ts); 
  17. function showmsg($msg='',$flag=false){ 
  18. $this->isshwomsg=emptyempty($this->isshwomsg) ? false : true; 
  19. if ($this->isshwomsg) { 
  20. echo '<br />--------------------------------------<br />'
  21. echo $msg
  22. echo '<br />--------------------------------------<br />'
  23. if ($flagexit
  24. }  
  25. function get_filter(){ 
  26. $getfilter="'|(and|or)//b.+?(>|<|=|in|like)|/////*.+?//*///|<//s*script//b|//bEXEC//b|UNION.+?SELECT|UPDATE.+?SET|INSERT//s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)//s+(TABLE|DATABASE)"
  27. foreach($_GET as $key=>$value){ 
  28. $this->StopAttack($key,$value,$getfilter); 
  29. function post_filter(){ 
  30. $postfilter="//b(and|or)//b.{1,6}?(=|>|<|//bin//b|//blike//b)|/////*.+?//*///|<//s*script//b|//bEXEC//b|UNION.+?SELECT|UPDATE.+?SET|INSERT//s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)//s+(TABLE|DATABASE)"
  31. foreach($_POST as $key=>$value){ 
  32. $this->StopAttack($key,$value,$postfilter); 
  33. function cookie_filter(){ 
  34. $cookiefilter="//b(and|or)//b.{1,6}?(=|>|<|//bin//b|//blike//b)|/////*.+?//*///|<//s*script//b|//bEXEC//b|UNION.+?SELECT|UPDATE.+?SET|INSERT//s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)//s+(TABLE|DATABASE)"
  35. foreach($_COOKIE as $key=>$value){ 
  36. $this->StopAttack($key,$value,$cookiefilter); 
  37. //過濾參數  
  38. function StopAttack($StrFiltKey,$StrFiltValue,$ArrFiltReq){ 
  39. if(is_array($StrFiltValue)){ 
  40. $StrFiltValue=implode($StrFiltValue); 
  41. }  
  42. if (preg_match("/".$ArrFiltReq."/is",$StrFiltValue)==1){ 
  43. $msg="<br><br>操作IP: ".$_SERVER["REMOTE_ADDR"]."<br>操作時間: ".strftime("%Y-%m-%d %H:%M:%S")."<br>操作頁面:".$_SERVER["PHP_SELF"]."<br>提交方式: ".$_SERVER["REQUEST_METHOD"]."<br>提交參數: ".$StrFiltKey."<br>提交數據: ".$StrFiltValue;  
  44. $this->wlog($msg);  
  45. $this->showmsg($msg);  
  46. exit(); 
  47. }  
  48. function filter_value_for_sql($str){ 
  49. $str = str_replace("and","",$str); 
  50. $str = str_replace("execute","",$str); 
  51. $str = str_replace("update","",$str); 
  52. $str = str_replace("count","",$str); 
  53. $str = str_replace("chr","",$str); 
  54. $str = str_replace("mid","",$str); 
  55. $str = str_replace("master","",$str); 
  56. $str = str_replace("truncate","",$str); 
  57. $str = str_replace("char","",$str); 
  58. $str = str_replace("declare","",$str); 
  59. $str = str_replace("select","",$str); 
  60. $str = str_replace("create","",$str); 
  61. $str = str_replace("delete","",$str); 
  62. $str = str_replace("insert","",$str); 
  63. $str = str_replace("'","",$str); 
  64. $str = str_replace('"',"",$str); 
  65. $str = str_replace(" ","",$str); 
  66. $str = str_replace("or","",$str); 
  67. $str = str_replace("=","",$str); 
  68. $str = str_replace(" ","",$str);  
  69. return $str
  70. //class end 

下面給大家介紹下PHP數據過濾

1、php提交數據過濾的基本原則

1)提交變量進數據庫時,我們必須使用addslashes()進行過濾,像我們的注入問題,一個addslashes()也就搞定了。其實在涉及到變量取值時,intval()函數對字符串的過濾也是個不錯的選擇。

2)在php.ini中開啟magic_quotes_gpc和magic_quotes_runtime。magic_quotes_gpc可以把get,post,cookie里的引號變為斜杠。magic_quotes_runtime對于進出數據庫的數據可以起到格式話的作用。其實,早在以前注入很瘋狂時,這個參數就很流行了。

3)在使用系統函數時,必須使用escapeshellarg(),escapeshellcmd()參數去過濾,這樣你也就可以放心的使用系統函數。

4)對于跨站,strip_tags(),htmlspecialchars()兩個參數都不錯,對于用戶提交的的帶有html和php的標記都將進行轉換。比如尖括號"<"就將轉化為 "<"這樣無害的字符。

$new = htmlspecialchars("Test", ENT_QUOTES);

strip_tags($text,);

5)對于相關函數的過濾,就像先前的include(),unlink,fopen()等等,只要你把你所要執行操作的變量指定好或者對相關字符過濾嚴密,我想這樣也就無懈可擊了。

2、PHP簡單的數據過濾

1)入庫: trim($str),addslashes($str)

2)出庫: stripslashes($str)

3)顯示: htmlspecialchars(nl2br($str))

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 同江市| 塘沽区| 平阴县| 孝感市| 天气| 北碚区| 民乐县| 岑溪市| 佛教| 会同县| 清涧县| 峨山| 罗田县| 棋牌| 察哈| 绍兴县| 司法| 宜兴市| 新平| 垦利县| 沙田区| 大新县| 和田市| 赣州市| 古浪县| 丰台区| 永福县| 永仁县| 聂荣县| 抚宁县| 霍州市| 东辽县| 郑州市| 诸城市| 福清市| 铁岭市| 沂源县| 广安市| 东乌| 武义县| 大渡口区|