中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行PHP中的數據過濾和驗證

發布時間:2021-10-15 15:28:16 來源:億速云 閱讀:139 作者:柒染 欄目:編程語言

今天就跟大家聊聊有關如何進行PHP中的數據過濾和驗證,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

永遠不要信任外部輸入,不要相信任何來自不受自己直接控制的數據源中的數據。實際開發中,總有人有意或無意的把危險數據注入PHP代碼中,因此PHP安全編程變得和重要,一般我們處理外部輸入安全思路是:過濾輸入、驗證數據。

過濾輸入

過濾輸入是指將來自外部數據中不安全的字符轉義或刪除。

外部輸入可以是任何東西:$_GET 和 $_POST 等表單輸入數據,$_SERVER 超全局變量中的某些值,還有通過 fopen('php://input', 'r') 得到的 HTTP 請求體。記住,外部輸入的定義并不局限于用戶通過表單提交的數據。上傳和下載的文檔,session 值,cookie 數據,還有來自第三方 web 服務的數據,這些都是外部輸入。

在數據到達存儲層(MySQLRedis)前一定要過濾輸入的數據,這是第一道防線。

假如有人在評論框中輸入以下內容并提交:

<script>alert("Helloweba");</script>

很顯然,這里加了惡意的<script>標簽,如果我們不加任何處理,那么數據就直接進存儲層了,然后用戶再瀏覽網頁的時候就會輸出彈出警告框了。所以這就是我們為什么不要相信任何外部輸入的原因。

那么,如何使用PHP處理過濾輸入數據呢?以下是我的幾點建議:

1、對于需要輸出到頁面的內容,使用strip_tags()函數來去除 HTML 標簽或者使用 htmlentities()或是htmlspecialchars()函數來對特殊字符分別進行轉義從而得到各自的HTML實體,避免XSS攻擊。如對上面的script腳本過濾:

<?php $input = '<script>alert("Helloweba");</script>'; echo htmlentities($input, ENT_QUOTES, 'utf-8');

2、如果需要傳入能夠在命令行中執行的選項,調用exec()等函數時要格外小心。你可以使用自帶的 escapeshellarg()函數來過濾執行命令的參數。

3、通過輸入數據拼接構建的SQL查詢語句,一定要注意使用PDO預處理。PDO是PHP內置的數據庫抽象層,使用一個接口表示多種數據庫。PDO預處理語句是PDO提供的一個工具,用于過濾外部數據,然后把過濾后的數據嵌入SQL語句中,避免SQL注入。

4、當接收外部輸入來從文件系統中加載文件。這可以通過將文件名修改為文件路徑來進行利用。你需要過濾掉"/", "../", null 字符或者其他文件路徑的字符來確保不會去加載隱藏、私有或者敏感的文件。

5、盡量不要使用正則表達式函數過濾HTML輸入,如preg_replace()preg_replace_all(),正則表達式很復雜,一不小心就掉坑里了,出錯幾率高。

驗證數據

與過濾輸入不同,驗證數據不會從輸入數據中刪除信息,而是只確認輸入數據是否符合預期,比如輸入的數據是否是Email郵箱、手機號碼、數字等等。這種數據我們或叫做無效數據,我們驗證這種無效數據,并阻止其進入數據存儲層,并適當的提示用戶錯誤的輸入信息。

PHP的filter_var()filter_input()函數可以過濾文本并對格式進行驗證。PHP提供了驗證布爾值、Email、浮點數、整數、IP地址、MAC地址、正則表達式以及URL地址的標志,如以下代碼是驗證輸入的郵箱是否正確:

$input = 'hello@example.com'; $isEmail = filter_var($input, FILTER_VALIDATE_EMAIL); if ($isEmail !== false) {    echo '驗證結果:成功'; } else {    echo '驗證結果:失敗'; }

我們需要特別注意filter_var()函數的返回值,如果驗證成功,返回的是要驗證的值,如果驗證失敗,則返回false。

附PHPfilter_var()函數的驗證標志:

FILTER_VALIDATE_BOOLEAN: 布爾值

FILTER_VALIDATE_EMAIL: Email

FILTER_VALIDATE_FLOAT: 浮點數

FILTER_VALIDATE_INT: 整數

FILTER_VALIDATE_IP: IP地址

FILTER_VALIDATE_MAC: MAC地址

FILTER_VALIDATE_REGEXP: 正則表達式

FILTER_VALIDATE_URL: URL地址

最后,說明下,黑客都是通過使用工具或非正常手段,繞過我們的前端驗證,構建危險數據進行WEB滲透,所以我們代碼開發時,尤其是后端開發,安全是我們的首要任務。接下來Helloweba將繼續給大家提供開發級別的安全防范文章,敬請關注。

看完上述內容,你們對如何進行PHP中的數據過濾和驗證有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

东丰县| 保山市| 嘉黎县| 曲沃县| 永春县| 金华市| 灵丘县| 大埔县| 闸北区| 金阳县| 德庆县| 屯门区| 泸水县| 鄂托克旗| 绥滨县| 仪征市| 定安县| 黑水县| 乌海市| 洛阳市| 远安县| 犍为县| 红河县| 五峰| 中卫市| 镇赉县| 钦州市| 沐川县| 阳东县| 如东县| 临潭县| 时尚| 临夏市| 茂名市| 绥滨县| 永胜县| 莱芜市| 肃宁县| 汶川县| 宣化县| 汕头市|