我有关于发布数据到我的应用的安全性的问题。我有一个代码,我从客户端捕获所有$ _POST和$ _GET数据,并将它们放入对象的数组中。然后将此对象传递给我需要访问某些类型数据的函数(GETS,POSTS,SESSIONS,某些配置等)。
我抓住了所有帖子并获得了这部分代码:
foreach ($_GET as $key => $value) // STORE $_GET VALUES
{
$this->_get[$key] = $value;
}
foreach ($_POST as $key => $value) // STORE $_POST VALUES
{
$this->_post[$key] = $value;
}
foreach ($_SESSION as $key => $value) // STORE $_SESSION VALUES
{
$this->_session[$key] = $value;
}
$this->_config = $config;
unset($config); // CLEAR $CONFIG VALUES
unset($_GET, $_POST /*, $_SESSION */ ); // CLEAR $_GET, $_POST FOR SECURITY ISSUES
在该app文件的末尾,我将$ this-> _session反转回$ _SESSION,如下所示:
foreach ($in->_session as $key => $value) // STORE $_SESSION VALUES
{
$_SESSION[$key] = $value;
}
我如何通过GETS和POSTS逃脱或做其他事情,以便他们可以安全地#34;跨应用程序使用。有时我使用这个访问数据库,或将数据写入数据库,但我不确定它是否安全。
有什么建议吗?
答案 0 :(得分:1)
在将值存储到对象中之前,您需要转义值, 我不确定你为什么要取消设置原始变量,但如果你这样做我会建议将其原始值存储在其他obj中 用于调试目的
private function escape($value){
// ... here you will have to escape the xss or sql injections
return $escapedValue;
}
...
echo $this->Form->create('filename', array('action' => 'upload', 'type' => 'file'));
echo $this->Form->file('filename');
这里很高兴阅读有关安全的文章
答案 1 :(得分:1)
我建议您先将$_POST
和$_GET
中的值进行过滤和清理,然后再将其存储为对象