empty($_SERVER['HTTP_VIA']) or exit('Access Denied'); 這行php什麼作用?

來源:互聯網
上載者:User
看別人的防攻擊代碼中有這樣一行:

empty($_SERVER['HTTP_VIA']) or exit('Access Denied');

有什麼作用?

回複內容:

看別人的防攻擊代碼中有這樣一行:

empty($_SERVER['HTTP_VIA']) or exit('Access Denied');

有什麼作用?

樓主可能疑惑的是or的問題
這種寫法,是php的一種常用的程式手法
or是或的意思,A or B只要AB有一個滿足true,它就會立馬執行後面的語句。
當A不為真後,or還不能當下就立即斷定,它還需要接著往下判斷第二個條件B,結果B直接exit了,這樣看起來要比if語句簡短明了。換句話說,若A為真,那麼就不會執行Access Denied了

其實,主要利用了如下幾點:

  1. or具備從左向右的結合性

  2. or條件中,只有有一個條件為真,那麼剩餘的條件就不判斷了,直接執行大括弧裡的程式碼片段

  3. 這種寫法比if(empty(xxx)){ xxxx }更好看些

如有錯誤,歡迎指正

防止使用者通過正確的方式運行到這段程式。

$_SERVER['HTTP_VIA'] 是Proxy 伺服器地址,也就是說,如果使用者是通過代理訪問的,就會直接退出,不會繼續執行下去。這是保證安全的一項措施。

Proxy 伺服器ip不為空白時退出當前程式,並輸出Access Denied,防止外部攻擊。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.