在採訪的問題,我得到以下問題限制人們使用PHP變量GET
的一個「你怎麼可以限制你的開發人員在您的自定義生成框架 使用
$_GET
變量。」
我們有自己的自定義生成框架,但在我們的分析框架,我們不能限制人們到位的$this->request->get
或$this->request->post
使用$_GET
或$_POST
。
我們有訪問此變量的方法,但大多數時間人們使用$_GET
或$_POST
而不是我們的方法。
你能給我答案嗎?
感謝
在採訪的問題,我得到以下問題限制人們使用PHP變量GET
的一個「你怎麼可以限制你的開發人員在您的自定義生成框架 使用
$_GET
變量。」
我們有自己的自定義生成框架,但在我們的分析框架,我們不能限制人們到位的$this->request->get
或$this->request->post
使用$_GET
或$_POST
。
我們有訪問此變量的方法,但大多數時間人們使用$_GET
或$_POST
而不是我們的方法。
你能給我答案嗎?
感謝
在php.ini,從variables_order
選項刪除G
和P
字符。
或者,如果你想讓他們恨你一輩子,你可以複製超全局中的內容,然後將其設置爲每次嘗試與其進行交互拋出異常的類的實例:
class supaglobal implements arrayaccess
{
public function _construct(){}
function offsetExists($offset) {
throw new Exception("Don't use GET, bro");
}
function offsetSet($property, $value){
throw new Exception("Don't use GET, bro");
}
function offsetUnset($property) {
throw new Exception("Don't use GET, bro");
}
function offsetGet($property){
throw new Exception("Don't use GET, bro");
}
}
$approvedget = $_GET;
$_GET = new supaglobal();
$abcd = $_GET["abcd"]; // throws exception
$abcd = $approvedget["abcd"]; // A - OK
爲包含$ _GET/$ _ POST的代碼創建存儲庫*拒絕*並指示違規方使用什麼技術:)(或者,不要拒絕,但責備/代碼審查:儘管相同的想法 - 檢測和更正。 ) – 2012-11-12 07:49:45
無論採用什麼解決方案,開發人員總是可以通過'parse_str(getenv('QUERY_STRING'),$ _GET = array())'來規避它。 – eggyal