php過濾post數據
❶ 請問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
❷ php版本是5.5,使用mysql_real_escape_string()對post的數據過濾,讀取出的數據都帶上了反斜杠,如何去掉
開啟php配置項:magic_quotes_sybase = ON
❸ php獲取post參數的幾種方式
方法1、最常見的方法是:$_POST['fieldname'];
說明:只能接收Content-Type: application/x-www-form-urlencoded提交的數據
解釋:也就是表單POST過來的數據
方法2、file_get_contents(「php://input」);
說明:
允許讀取 POST 的原始數據。
和 $HTTP_RAW_POST_DATA 比起來,它給內存帶來的壓力較小,並且不需要任何特殊的 php.ini 設置。
php://input 不能用於 enctype=」multipart/form-data」。
解釋:
對於未指定 Content-Type 的POST數據,則可以使用file_get_contents(「php://input」);來獲取原始數據。
事實上,用PHP接收POST的任何數據都可以使用本方法。而不用考慮Content-Type,包括二進制文件流也可以。
所以用方法二是最保險的方法。
方法3、$GLOBALS['HTTP_RAW_POST_DATA'];
說明:
總是產生 $HTTP_RAW_POST_DATA 變數包含有原始的 POST 數據。
此變數僅在碰到未識別 MIME 類型的數據時產生。
$HTTP_RAW_POST_DATA 對於 enctype=」multipart/form-data」 表單數據不可用
如果post過來的數據不是PHP能夠識別的,可以用 $GLOBALS['HTTP_RAW_POST_DATA']來接收,
比如 text/xml 或者 soap 等等
解釋:
$GLOBALS['HTTP_RAW_POST_DATA']存放的是POST過來的原始數據。
$_POST或$_REQUEST存放的是 PHP以key=>value的形式格式化以後的數據。
但$GLOBALS['HTTP_RAW_POST_DATA']中是否保存POST過來的數據取決於centent-Type的設置,即POST數據時 必須顯式示指明Content-Type: application/x-www-form-urlencoded,POST的數據才會存放到 $GLOBALS['HTTP_RAW_POST_DATA']中。
❹ php中,通過$_GET 和 $_POST 取得的數據 安不安全 需要什麼過濾函數處理嗎
引號過濾有magic_quotes_gpc(伺服器配置)
函數addslashes() htmlspecialchars(,ENT_QUOTE);
注意伺服器上是否已經開啟magic_quotes_gpc
(php>=5.3 已經廢棄了它) 如果已經開啟,再進行轉義會導致雙層轉義。 另外addslashes() addcslashes() 都不能對數組進行處理,需要寫一個遞歸實現。
你可以使用函數get_magic_quotes_gpc()來檢測它是否已經開啟
不建議使用addslashes使用addslashes可能會因為資料庫編碼的問題使得單引號未被轉義了解詳情可訪問:http://shiflett.org/blog/2006/jan/addslashes-versus-mysql-real-escape-string
❺ 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; }}
❻ php $_POST 過濾非法信息的主法;
PHP函數特殊符號加 '\' 前綴
string addslashes ( string $str )
❼ php清理_post中內容
貌似當你提交的時候,POST全局數組的內容就是當前的表單項,除非自己弄了個特殊機制(比如保回存上次提交的內容答),一般是不會將上次的記錄提交過來的。
數據下標會變,不知道具體是什麼情況,但通常來說,POST數組同名的數據會自動覆蓋(因此,同一表單提交後,內容都是最新的內容)。
❽ php自定義一個函數用來過濾表單的。。比如說filter($_POST);調用filter函數的時
|function filter($array){
foreach($array as $k=>$v){
$array[$k]=htmlspecialchars(strip_tags($v));
$array[$k]=eregi('select|容insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile',$array[$k];
}
}
❾ PHP 如果不對 POST 或者 GET 請求做過濾處理就會被注入嗎
有被注入的風險,要做盡可能多的過濾,才能保證注入風險降到最低。前台提交之前要過濾,後台處理時要過濾,插入資料庫之前也要進行過濾。
❿ php安全問題,請問$_post的東西怎麼過濾 - 技術問答
[php]function daddslashes($string, $force = 0) {? ? !defined(\'MAGIC_QUOTES_GPC\') && define(\'MAGIC_QUOTES_GPC\', get_magic_quotes_gpc());? ? if(!MAGIC_QUOTES_GPC || $force) {? ?? ???if(is_array($string)) {? ?? ?? ?? ?foreach($string as $key => $val) {? ?? ?? ?? ?? ? $string[$key] = daddslashes($val, $force);? ?? ?? ?? ?}? ?? ???} else {? ?? ?? ?? ?$string = addslashes($string);? ?? ???}? ? }? ? return $string;}[/php]