日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

PHP防止注入攻击

發布時間:2023/11/27 生活经验 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP防止注入攻击 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

注入攻擊不多說了

?

PHP addslashes() 函數--單撇號加斜線轉義

PHP String 函數

定義和用法

addslashes() 函數在指定的預定義字符前添加反斜杠。

這些預定義字符是:

  • 單引號 (')
  • 雙引號 (")
  • 反斜杠 (\)
  • NULL

語法

addslashes(string)
參數描述
string必需。規定要檢查的字符串。

提示和注釋

提示:該函數可用于為存儲在數據庫中的字符串以及數據庫查詢語句準備合適的字符串。

注釋:默認情況下,PHP 指令 magic_quotes_gpc 為 on,對所有的 GET、POST 和 COOKIE 數據自動運行 addslashes()。不要對已經被 magic_quotes_gpc 轉義過的字符串使用 addslashes(),因為這樣會導致雙層轉義。遇到這種情況時可以使用函數 get_magic_quotes_gpc() 進行檢測。

例子

在本例中,我們要向字符串中的預定義字符添加反斜杠:

<?php
$str = "Who's John Adams?";
echo $str . " This is not safe in a database query.<br />";
echo addslashes($str) . " This is safe in a database query.";
?>

輸出:

Who's John Adams? This is not safe in a database query.
Who\'s John Adams? This is safe in a database query.

get_magic_quotes_gpc函數

?

?

function html($str)

{

???? $str = get_magic_quotes_gpc()?$str:addslashes($str);

???? return $str;

}

----------------

get_magic_quotes_gpc

取得 PHP 環境變數 magic_quotes_gpc 的值。

語法: long get_magic_quotes_gpc(void);

傳回值: 長整數

函式種類: PHP 系統功能

?

?

?

內容說明

?

本函式取得 PHP 環境設定的變數 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。傳回 0 表示關閉本功能;傳回 1 表示本功能開啟。當 magic_quotes_gpc 開啟時,所有的 ' (單引號), " (雙引號), \ (反斜線) and 空字符會自動轉為含有反斜線的溢出字符。

-----------------------

addslashes -- 使用反斜線引用字符串

描述

string addslashes ( string str)

返回字符串,該字符串為了數據庫查詢語句等的需要在某些字符前加上了反斜線。這些字符是單引號(')、雙引號(")、反斜線(\)與 NUL(NULL 字符)。

一個使用 addslashes() 的例子是當你要往數據庫中輸入數據時。例如,將名字 O'reilly 插入到數據庫中,這就需要對其進行轉義。大多數據庫使用 \ 作為轉義符:O\'reilly。這樣可以將數據放入數據庫中,而不會插入額外的 \。當 PHP 指令 magic_quotes_sybase 被設置成 on 時,意味著插入 ' 時將使用 ' 進行轉義。

默認情況下,PHP 指令 magic_quotes_gpc 為 on,它主要是對所有的 GET、POST 和 COOKIE 數據自動運行 addslashes()。不要對已經被 magic_quotes_gpc 轉義過的字符串使用 addslashes(),因為這樣會導致雙層轉義。遇到這種情況時可以使用函數 get_magic_quotes_gpc() 進行檢測。

例子 1. addslashes() 示例

$str = "Is your name O'reilly?";

// 輸出:Is your name O\'reilly?

echo addslashes($str);

?>

get_magic_quotes_gpc()

本函數取得 PHP 環境配置的變量 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。返回 0 表示關閉本功能;返回 1 表示本功能打開。當 magic_quotes_gpc 打開時,所有的 ' (單引號), " (雙引號), \ (反斜線) and 空字符會自動轉為含有反斜線的溢出字符。

?

magic_quotes_gpc

對于 php.ini 中的 magic_quotes_gpc,是設置為 off 還是為 on 呢?

我個人觀點,應該設置為 on

總結如下:

1. 對于magic_quotes_gpc=on的情況,

我們可以不對輸入和輸出數據庫的字符串數據作
addslashes()和stripslashes()的操作,數據也會正常顯示。

如果此時你對輸入的數據作了addslashes()處理,
那么在輸出的時候就必須使用stripslashes()去掉多余的反斜杠。

2. 對于magic_quotes_gpc=off 的情況

必須使用addslashes()對輸入數據進行處理,但并不需要使用stripslashes()格式化輸出
因為addslashes()并未將反斜杠一起寫入數據庫,只是幫助mysql完成了sql語句的執行。

補充:

magic_quotes_gpc 作用范圍是:WEB客戶服務端;作用時間:請求開始時,例如當腳本運行時.
magic_quotes_runtime 作用范圍:從文件中讀取的數據或執行exec()的結果或是從SQL查詢中得到的;作用時間:每次當腳本訪問運行狀態中產生的數據

代碼:
<?php
/*
有時表單提交的變量不止一個,可能有十幾個,幾十個。那么一次一次地復制/粘帖addslashes(),是否麻煩了一點?由于從表單或URL獲取的數據都是以數組形式出現的,如$_POST、$_GET)那就自定義一個可以“橫掃千軍”的函數
*/
function quotes($content)
{
//如果magic_quotes_gpc=Off,那么就開始處理
if (!get_magic_quotes_gpc()) {
//判斷$content是否為數組
if (is_array($content)) {
//如果$content是數組,那么就處理它的每一個單無
foreach ($content as $key=>$value) {
$content[$key] = addslashes($value);
}
} else {
//如果$content不是數組,那么就僅處理一次
addslashes($content);
}
} else {
//如果magic_quotes_gpc=On,那么就不處理
}
//返回$content
return $content;
}
?>

總結

以上是生活随笔為你收集整理的PHP防止注入攻击的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。