php 安全性漏洞 $_SERVER[’PHP_SELF’]

來源:互聯網
上載者:User

$_SERVER[’PHP_SELF’]在開發的時候常會用到,一般用來引用當前網頁地址,並且它是系統自動產生的全域變數,也會有什麼問題嗎?讓我們先看看下面的代碼吧:

<form action=”<?php echo $_SERVER[’PHP_SELF’]; ?>”>
<input type=”submit” name=”submit” value=”submit” />
</form>
這段代碼非常簡單,我們想用$_SERVER[’PHP_SELF’]來讓網頁提交時提交到它自己,假設代碼檔案名稱為test.php,在執行的時候就一定會得到我們期望的地址嗎?首先試試地址http://…/test.php,結果當然是沒有問題的啦,別著急,你再訪問一下http://…/test.php/a=1,將會得到如下用戶端代碼:

<form action=”/fwolf/temp/test.php/a=1″>
<input type=”submit” name=”submit” value=”submit” />
</form>
顯然,這已經超出了我們的期望,web伺服器居然沒有產生諸如404之類的錯誤,頁面正常執行了,並且在產生的html代碼中居然有使用者可以輸入的部分,恐怖的地方就在這裡。別小看那個“a=1”,如果把它換成一段js代碼,就顯得更危險了,比如這麼調用:

http://…/test.php/%22%3E%3Cscript%3Ealert(’xss’)%3C/script%3E%3Cfoo
是不是看到了js的alert函數執行的效果?檢查一下產生的html原始碼找找原因吧。

通過這種嵌入js代碼的方式,攻擊者能

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.