1. PHP怎麼過濾GET或者POST的參數怎麼樣才能保證代碼不被注入
//本人在抄 TP 框架中的過濾函數。// Input 類是 TP 供給的。function inputFilter($content){ if(is_string($content) ) { return Input::getVar($content); } elseif(is_array($content)){ foreach ( $content as $key => $val ) { $content[$key] = inputFilter($val); } return $content; } elseif(is_object($content)) { $vars = get_object_vars($content); foreach($vars as $key=>$val) { $content->$key = inputFilter($val); } return $content; } else{ return $content; }}
2. php獲取url參數
1、在當前網頁echo出變數$_SERVER['HTTP_HOST']即可獲取域名或主機地址。
3. php url 參數會重復,怎麼處理重復url參數,謝謝
重復是你自己加的<a href="<?=$url?>&id=6">菜單1</a>
這樣寫吧你
<?php$get=array_unique($_GET);
//$get['newparam']='new_value';
isset($get['id'])&&unset($get['id']);
$query=http_build_query($get);
$url="?".$query;
echo$url;
?>
<div>
<ahref="<?=$url?>&id=6">菜單1</a>
<ahref="<?=$url?>&id=7">菜單2</a>
<ahref="<?=$url?>&id=8">菜單3</a>
</div>
或者
<?php$get=array_unique($_GET);
//$get['newparam']='new_value';
?>
<div>
<ahref="?<?phpechohttp_build_query(array_merge($get,array('id'=>6)));?>">菜單1</a>
<ahref="?<?phpechohttp_build_query(array_merge($get,array('id'=>7)));?>">菜單2</a>
<ahref="?<?phpechohttp_build_query(array_merge($get,array('id'=>8)));?>">菜單3</a>
</div>
4. 請問PHP怎麼過濾GET或者POST的參數防止js注入,或者一些html注入請請提供代碼參考謝謝!
string mysql_real_escape_string ( string unescaped_string [, resource link_identifier])
本函數將來 unescaped_string 中的特殊字元自轉義,並計及連接的當前字元集,因此可以安全用於 mysql_query()。
注: mysql_real_escape_string() 並不轉義 % 和 _。
例子 1. mysql_real_escape_string() 例子
<?php
$item = "Zak's and Derick's Laptop";
$escaped_item = mysql_real_escape_string($item);
printf ("Escaped string: %s\n", $escaped_item);
?>
以上例子將產生如下輸出:
Escaped string: Zak\'s and Derick\'s Laptop
5. php中數據過濾的問題
我來解釋一下吧
preg_replace('/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/','',$string);
去掉控制字元,你google一下ascii table就知道了,php裡面 - 代表范圍,比如\x00-\x08指的是ASCII代碼在\x00到\x08范圍的字元,\x0A和\x0D代表回車換行,所以沒包含在這個裡面,否則直接\x00-\x1F了,
$string = str_replace(array("\0","%00","\r"),'',$string);
\0表示ASCII 0x00的字元,通常作為字元串結束標志
$string = preg_replace("/&(?!(#[0-9]+|[a-z]+);)/si",'&',$string);
我們知道HTML裡面可以用xx;來對一些字元進行編碼,比如 (空格), ߷ Unicode字元等,A(?!B) 表示的是A後面不是B,所以作者想保留 ߷類似的 HTML編碼字元,去掉其他的問題字元,比如 &123; nbsp;
str_replace(array("%3C",'<'),'<',$string);
第一個'<'多餘吧,%3C是編碼以後的 <, 一般用在URL編碼里
str_replace(array("%3E",'>'),'>',$string);
str_replace(array('"',"'","\t",' '),array('"',"'",'',''),$string);
略過
有問題再追問
6. php 怎麼過濾後url後面的綴名
$_GET['id']='sdfsf.5.jpg';
$new_str= strrev($str);
$new_str1=substr($new_str,strpos($new_str, ".")+1);
echo strrev($new_str1)
7. php如何向JavaWeb一樣定義過濾器
$url = $_SERVER["PHP_SELF"];
$url = substr($url,strlen($url)-8,2);
//echo $url;
if(($_SERVER["PHP_SELF"] == '/miaomi/index.php/Index/login')||($_SERVER["PHP_SELF"] == '/miaomi/index.php')||$url=='In')
{
}
else{
SESSION_START();
if((!isset($_SESSION['username'])))
{
echo "<script language='javascript'>window.location.href='/miaomi/index.php';</script>";
}
8. php 純數字url參數安全過濾代碼
標准答案我就不知道了,只是我個人的理解大概是這個方面要注意:
1 [POST/GET]頁面參數傳值/字元串輸入/數據入庫等類似動作都要做好嚴格的危險字元過濾處理.
2 相關PHP的I/O操作,需要注意限制許可權,文件名或目錄名或內容都要做好過濾處理.
3 敏感信息(如PASSWORD/銀行帳號等)不要依賴COOKIE,SESSION,最好讀表,並盡量緩存讀表數據.
4 注意對網站根目錄及下面所有子目錄及文件的許可權控制與保護,不要讓配置文件/系統信息等文件暴露.
5 要完全屏掉所有出錯提示,或者能捕獲所有出錯並重新定製輸出,以防報錯信息泄露你的網站及相關文件路徑,MYSQL欄位/網站環境等.
6 所有對庫表的寫入與讀取操作都需要做好訪問來路限制/同IP同內容讀寫間隔限制/並驗證POST與GET的指定標識KEY的有效性等這些安全動作.
7 有類似文件下載/或文本流下載等功能的,盡量不要在URL裡面直接調用目標文件地址的方式來做,最好是傳ID或是指定的NAME標識.
8 MYSQL 的用戶最好分開,不要用ROOT用戶來連接MYSQL,另建專用用戶,並限制死此用戶的許可權,只能操作指定的庫,最好去掉此用戶的命令行導入導出的許可權等這些危險的許可權.