精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码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)系客服

主站蜘蛛池模板: 枝江市| 康定县| 沙洋县| 阜宁县| 吴川市| 井陉县| 岱山县| 桦甸市| 新余市| 大足县| 龙岩市| 南丹县| 含山县| 宜都市| 长垣县| 雅江县| 渝北区| 麟游县| 元阳县| 中卫市| 通许县| 新田县| 远安县| 南丹县| 卫辉市| 闽侯县| 望城县| 襄樊市| 进贤县| 望奎县| 秦皇岛市| 清水河县| 新绛县| 花莲市| 嘉黎县| 济源市| 苍南县| 时尚| 泸西县| 周宁县| 和硕县|