這些頁面將展示如何安全地處理 PHP 表單。對 HTML 表單數據進行適當的驗證對于防范黑客和垃圾郵件很重要!
我們稍后使用的 HTML 表單包含多種輸入字段:必需和可選的文本字段、單選按鈕以及提交按鈕:
name、email 和 website 屬于文本輸入元素,comment 字段是文本框。HTML 代碼是這樣的:
Name: input type= text name= name E-mail: input type= text name= email Website: input type= text name= website Comment: textarea name= comment rows= 5 cols= 40 /textarea
因此,$_SERVER[ PHP_SELF ] 將表單數據發送到頁面本身,而不是跳轉到另一張頁面。這樣,用戶就能夠在表單頁面獲得錯誤提示信息。
什么是 htmlspecialchars() 函數?htmlspecialchars() 函數把特殊字符轉換為 HTML 實體。這意味著 和 之類的 HTML 字符會被替換為 和 。這樣可防止攻擊者通過在表單中注入 HTML 或 JavaScript 代碼(跨站點腳本攻擊)對代碼進行利用。
提示:跨站點腳本(Cross-site scripting,XSS)是一種計算機安全漏洞類型,常見于 Web 應用程序。XSS 能夠使攻擊者向其他用戶瀏覽的網頁中輸入客戶端腳本。
假設我們的一張名為 test_form.php 的頁面中有如下表單:
form method= post action= ?php echo $_SERVER[ PHP_SELF ?
現在,如果用戶進入的是地址欄中正常的 URL: http://www.example.com/test_form.php ,上面的代碼會轉換為:
form method= post action= test_form.php
到目前,一切正常。
不過,如果用戶在地址欄中鍵入了如下 URL:
http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E
在這種情況下,上面的代碼會轉換為:
form method= post action= test_form.php / script alert('hacked') /script
這段代碼加入了一段腳本和一個提示命令。并且當此頁面加載后,就會執行 JavaScript 代碼(用戶會看到一個提示框)。這僅僅是一個關于 PHP_SELF 變量如何被利用的簡單無害案例。
您應該意識到 script 標簽內能夠添加任何 JavaScript 代碼!黑客能夠把用戶重定向到另一臺服務器上的某個文件,該文件中的惡意代碼能夠更改全局變量或將表單提交到其他地址以保存用戶數據,等等。
htmlspecialchars() 函數把特殊字符轉換為 HTML 實體?,F在,如果用戶試圖利用 PHP_SELF 變量,會導致如下輸出:
form method= post action= test_form.php/ quot; script alert('hacked') /script
無法利用,沒有危害!
運行實例
請注意在腳本開頭,我們檢查了表單是否使用 $_SERVER[ REQUEST_METHOD ] 進行提交。如果 REQUEST_METHOD 是 POST,那么表單已被提交 - 并且應該對其進行驗證。如果未提交,則跳過驗證并顯示一個空白表單。
不過,在上面的例子中,所有輸入字段都是可選的。即使用戶未輸入任何數據,腳本也能正常工作。
下一步是制作必填輸入字段,并創建需要時使用的錯誤消息。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答