經常使用的安全函數

Web應用中,安全是相當重要的,比寫出漂亮的簡潔的代碼更爲重要,那麼今天我們就來聊聊PHP中有哪些安全(過濾)函數php

PHP的安全函數

  • addslashes
    • string addslashes ( string $str )
    • 使用反斜線引用字符串
    • 該字符串爲了數據庫查詢語句等的須要在某些字符前加上了反斜線。
    • 這些字符是單引號(')、雙引號(")、反斜線(\)與 NUL(NULL 字符)。
    • 一個使用 addslashes() 的例子是當你要往數據庫中輸入數據時。
    • 例如,將名字 O'reilly 插入到數據庫中,這就須要對其進行轉義。
    • 強烈建議使用 DBMS 指定的轉義函數 (好比 MySQL 是 mysqli_real_escape_string(),PostgreSQL 是 pg_escape_string()),可是若是你使用的 DBMS 沒有一個轉義函數,而且使用 \ 來轉義特殊字符,你可使用這個函數。
    • 僅僅是爲了獲取插入數據庫的數據,額外的 \ 並不會插入。
    • 當 PHP 指令 magic_quotes_sybase 被設置成 on 時,意味着插入 ' 時將使用 ' 進行轉義。
    • PHP 5.4 以前 PHP 指令 magic_quotes_gpc 默認是 on, 實際上全部的 GET、POST 和 COOKIE 數據都用被 addslashes() 了。
    • 不要對已經被 magic_quotes_gpc 轉義過的字符串使用 addslashes(),由於這樣會致使雙層轉義。
    • 遇到這種狀況時可使用函數 get_magic_quotes_gpc() 進行檢測。
$str = "Is your name O'reilly?";
echo addslashes($str);  // 輸出: Is your name O\'reilly?
  • htmlspecialcharshtml

    • 將特殊字符轉換爲 HTML 實體
    • string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = TRUE ]]] )
    • 某類字符在 HTML 中有特殊用處,如需保持原意,須要用 HTML 實體來表達。
    • 本函數會返回字符轉義後的表達。
    • 如需轉換子字符串中全部關聯的名稱實體,使用 htmlentities() 代替本函數。
  • htmlentitiesmysql

    • string htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )
    • 將字符轉換爲 HTML 轉義字符
    • 本函數各方面都和 htmlspecialchars() 同樣, 除了 htmlentities() 會轉換全部具備 HTML 實體的字符。
    • 若是要解碼(反向操做),可使用 html_entity_decode()。
  • strip_tagssql

    • 從字符串中去除 HTML 和 PHP 標記
    • string strip_tags ( string $str [, string $allowable_tags ] )
    • 該函數嘗試返回給定的字符串 str 去除空字符、HTML 和 PHP 標記後的結果。它使用與函數 fgetss() 同樣的機制去除標記。
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";

// 容許 <p> 和 <a>
echo strip_tags($text, '<p><a>');
相關文章
相關標籤/搜索