精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
PHP 使用 $_SERVER['PHP_SELF'] 獲取當前頁面地址及其安全性問題

PHP $_SERVER['PHP_SELF']

$_SERVER['PHP_SELF'] 表示當前 php 文件相對于網(wǎng)站根目錄的位置地址,與 document root 相關。

假設我們有如下網(wǎng)址,$_SERVER['PHP_SELF']得到的結(jié)果分別為:

http://www.5idev.com/php/  :/php/index.phphttp://www.5idev.com/php/index.php  :/php/index.phphttp://www.5idev.com/php/index.php?test=foo  :/php/index.phphttp://www.5idev.com/php/index.php/test/foo  :/php/index.php/test/foo

因此,可以使用 $_SERVER['PHP_SELF'] 很方便的獲取當前頁面的地址:

$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];

以上面的地址為例,得到的結(jié)果如下:

http://www.5idev.com/php/index.php

上面是簡單獲取 http 協(xié)議的當前頁面 URL ,只是要注意該地址是不包含 URL 中請求的參數(shù)(?及后面的字串)的。

如果希望得到包含請求參數(shù)的完整 URL 地址,請使用 $_SERVER['REQUEST_URI'] 。

PHP $_SERVER['PHP_SELF'] 安全性

由于利用 $_SERVER['PHP_SELF'] 可以很方便的獲取當前頁面地址,因此一些程序員在提交表單數(shù)據(jù)到當前頁面進行處理時,往往喜歡使用如下這種方式:

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

假設該頁面地址為:

http://www.5idev.com/php/index.php

訪問該頁面,得到的表單 html 代碼如下:

<form method="post" action="/php/index.php">

這段代碼是正確的,但是當訪問地址變成:

http://www.5idev.com/php/index.php/test/foo

頁面正常執(zhí)行了,表單 html 代碼變成:

<form method="post" action="/php/index.php/test/foo">

顯然這段代碼不是我們期望的,攻擊者可以在 URL 后面隨意加上攻擊代碼。要解決該問題,可以:

  1. 使用 htmlentities($_SERVER['PHP_SELF']) 替代 $_SERVER['PHP_SELF'],讓 URL 中可能的惡意代碼轉(zhuǎn)換為用于顯示的 html 代碼而無法執(zhí)行。
  2. 可以的條件下,使用 $_SERVER['SCRIPT_NAME'] 或 $_SERVER['REQUEST_URI'] 替代 $_SERVER['PHP_SELF']
  3. 在公共代碼里將 $_SERVER['PHP_SELF'] 進行重寫:
$phpfile = basename(__FILE__);$_SERVER['PHP_SELF'] = substr($_SERVER['PHP_SELF'], 0, strpos($_SERVER['PHP_SELF'], $phpfile)).$phpfile; 

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
如何用php的環(huán)境變量得到一個網(wǎng)頁地址的內(nèi)容?ip地址又要怎樣得到?
PHP
PHP獲取當前頁面 URL
PHP獲取當前頁面完整URL的代碼
分享代碼:php獲取客戶端ip地址的代碼
ThinkPHP防范XSS跨站攻擊
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服

主站蜘蛛池模板: 清镇市| 旺苍县| 弥勒县| 涞水县| 山阴县| 清远市| 万荣县| 灯塔市| 安国市| 建宁县| 沙湾县| 获嘉县| 延吉市| 鄂托克旗| 手游| 璧山县| 陇西县| 阜阳市| 教育| 大方县| 彰武县| 佛冈县| 班玛县| 宁津县| 四平市| 武隆县| 彰化县| 上饶市| 郴州市| 普宁市| 泽库县| 调兵山市| 台北县| 镇平县| 太谷县| 广汉市| 响水县| 改则县| 武威市| 湘乡市| 海门市|