我想弄清楚消毒的最佳方式,並在某種程度上驗證發送到我的應用的POST數據。在路由器中保護POST數據
我做了這個功能駐留在我的路由器,被稱爲在__constructor if($_POST)
存在:
private function validatePost()
{
foreach($_POST as $key => $value) {
if(preg_match('/[^a-zA-Z]/', $key))
{
$this->throwError('POST Error', 'Invalid index name.');
return;
}
if(strlen($value) > $this->postLimit && $this->postLimit != -1)
{
$this->throwError('POST Error', 'Posted value to large.');
return;
}
if(substr($key, -2, 2) == 'id' && !is_numeric($value))
{
$this->throwError('POST Error', 'Expected a number, didn\'t get one.');
return;
}
else
{
//$value = urlencode($value);
}
$_POST[$key] = $value;
}
}
這是故意有點嚴格,但如果我堅持規則,沒關係我已經在我的框架中做出了。
我已閱讀,限制$ _ POST大小確實有助於挫敗一些攻擊,在這種情況下,我把-1代表/默認限制(但如果需要我的配置文件,它可以被設置爲以下)。
我註釋掉URL編碼,因爲我目前不能確定的,當它到達預定的功能將其解碼的最佳途徑。我應該編碼它,最好的解碼方法是什麼?也許在我所有的課程延伸與否的大師Controller
中?
任何其他建議都歡迎。