【发布时间】:2013-04-06 11:20:57
【问题描述】:
我正在尝试找出对发送到我的应用的 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 设置为无/默认限制(但如果需要,可以在我的配置文件中将其设置为更少)。
我注释掉了 urlencoding,因为我目前不确定在达到预期功能时解码它的最佳方式。我应该对它进行编码吗?最好的解码方法是什么?也许在我所有的课程都继承自的大师Controller 中?
欢迎提出其他建议。
【问题讨论】:
标签: php oop model-view-controller post front-controller