tp的url和基本屬性狀態

來源:互聯網
上載者:User

標籤:攻擊   php   版本號碼   lsp   建立   檔案   bsp   cells   tab   

在上篇隨筆中我們已經知道了tp架構的四種訪問方式,那麼當在地址欄輸入不存在的操作方法、控制器會怎麼樣呢?

先看一下定義:

空操作:一個對象(控制器)調用本身不存在的方法

空控制器:在執行個體化控制器對象的時候,沒有找到指定的類

首先,在Application檔案下建立Ceshi模組,並在Ceshi模組下按照Home模組建立相同的檔案夾,如:

1)在Controller檔案夾下建立Login控制器:

12345678910 <?phpnamespace Ceshi\Controller;use Think\Controller;class LoginController extends  Controller{   public function login()   {    echo "歡迎登陸!";   }}

2)地址欄輸入訪問地址:http://localhost/wamp/thinkphp/index.php/Ceshi/Login/login

一、 在地址欄訪問不存在的方法,會怎麼樣?

http://localhost/wamp/thinkphp/index.php/Ceshi/Login/loginsss

 

 

通過此頁面,我們可以知道:

(1)這樣的介面暴露了我們是用什麼工具寫的代碼,同時暴露了thinkphp的版本號碼,如果駭客找到該版本號碼的漏洞就可以攻擊你了。

(2)其次,這樣的介面很不友好,對於使用者來說,他們看不懂也不知道是哪裡出錯了。

如何給出更為安全、更為友好的提示呢?

 

父類中有個方法如,我們可以仿照這個來做:

 

 

 

 

第一種方法:做一個空的模板

1)在View檔案夾下建一個Ceshi檔案夾,路徑如下:

loginsss.html

12345678910111213 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>無標題文檔</title><style type="text/css">*{ margin:0px auto; padding:0px}</style></head><body><div>您訪問的操作方法有誤!</div></body></html>

  2) 再次訪問http://localhost/wamp/thinkphp/index.php/Ceshi/Login/loginsss

 

這樣相比只出現代碼要友好的多,但是,我們不可能每輸入一個不存在的方法就做一個模板,這樣不切實際,再說我們也不知道使用者下一次會輸入什麼樣的操作方法,所以這種方法並不可行。

第二種方法:做一個空的方法:_empty()方法

 

12345678910111213 <?phpnamespace Ceshi\Controller;use Think\Controller;class LoginController extends  Controller{   public function login()   {    echo "歡迎登陸!";   }   public function _empty(){    echo "您訪問的操作方法不存在!";   }}

  

這樣不論訪問到什麼樣的空方法都會顯示“您訪問的操作方法不存在!”

 

http://localhost/wamp/thinkphp/index.php/Ceshi/Login/logins

 

 

http://localhost/wamp/thinkphp/index.php/Ceshi/Login/aaa

 

二、 在地址欄訪問不存在的控制器,會怎麼樣?出現同樣的報錯

 

解決方案:

建立一個Empty控制器:

 EmptyController.class.php

123456789 <?phpnamespace Ceshi\Controller;use Think\Controller;class EmptyController extends Controller{    public function _empty(){        echo "您訪問的控制器有誤哦";    }}

 再訪問http://localhost/wamp/thinkphp/index.php/Ceshi/Main/login

 

 換個  http://localhost/wamp/thinkphp/index.php/Ceshi/MMMn/login

 

這樣就可以解決空控制器和空操作的問題了~.~.~

tp的url和基本屬性狀態

聯繫我們

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