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

首頁 > 開發 > PHP > 正文

php 一些基本安全處理技巧

2024-05-04 21:58:50
字體:
來源:轉載
供稿:網友

對于一些常見的輸出目標(包括客戶端、數據庫教程和URL)的轉義,PHP 中有內置函數可用.

如果你要寫一個自己算法,做到萬無一失很重要,需要找到在外系統中特殊字符的可靠和完整的列表,以及它們的表示方式,這樣數據是被保留下來而不是轉譯了.

最常見的輸出目標是客戶機,使用htmlentities( )在數據發出前進行轉義是最好的方法,與其它字符串函數一樣,它輸入是一個字符串,對其進行加工后進行輸出,但是使用htmlentities( )函數的最佳方式是指定它的兩個可選參數:引號的轉義方式(第二參數)及字符集(第三參數),引號的轉義方式應該指定為ENT_QUOTES,它的目的是同時轉義單引號和雙引號,這樣做是最徹底的,字符集參數必須與該頁面所使用的字符集相必配.

為了區分數據是否已轉義,我還是建議定義一個命名機制,對于輸出到客戶機的轉義數據,我使用$html 數組進行存儲,該數據首先初始化成一個空數組,對所有已過濾和已轉義數據進行保存,實例代碼如下:

  1. <?php 
  2. $html = array( ); 
  3. $html['username'] = htmlentities($clean['username'], ENT_QUOTES, 'UTF-8');//開源代碼Vevb.com 
  4. echo "<p>Welcome back, {$html['username']}.</p>"
  5. ?> 

小提示:htmlspecialchars( )函數與htmlentities( )函數基本相同,它們的參數定義完全相同,只不過是htmlentities( )的轉義更為徹底,通過$html['username']把username 輸出到客戶端,你就可以確保其中的特殊字符不會被瀏覽器所錯誤解釋,如果username 只包含字母和數字的話,實際上轉義是沒有必要的,但是這體現了深度防范的原則,轉義任何的輸出是一個非常好的習慣,它可以戲劇性地提高你的軟件的安全性.

另外一個常見的輸出目標是數據庫,如果可能的話,你需要對SQL 語句中的數據使用PHP內建函數進行轉義,對于MySQL 用戶,最好的轉義函數是mysql_real_escape_string(),如果你使用的數據庫沒有PHP 內建轉義函數可用的話,addslashes( )是最后的選擇.

下面的例子說明了對于MySQL 數據庫的正確的轉義技巧:

  1. <?php 
  2. $mysql = array( ); 
  3. $mysql['username'] = mysql_real_escape_string($clean['username']); 
  4. $sql = "SELECT * 
  5. FROM profile 
  6. WHERE username = '{$mysql['username']}'"; 
  7. $result = mysql_query($sql); 
  8. ?> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嘉鱼县| 平凉市| 奈曼旗| 嘉鱼县| 长沙县| 固安县| 汾西县| 阳东县| 阳城县| 日照市| 从化市| 屯昌县| 合作市| 宾阳县| 区。| 紫阳县| 吉隆县| 浠水县| 玉屏| 凤凰县| 乌拉特前旗| 虎林市| 泊头市| 工布江达县| 民勤县| 济源市| 芷江| 天津市| 社旗县| 嘉禾县| 万盛区| 长武县| 彰化市| 霍林郭勒市| 洛阳市| 林西县| 洪雅县| 怀柔区| 余江县| 永丰县| 开原市|