2015-05-13 2 views
0

У меня есть этот вопрос относительно безопасности опубликованных данных в моем приложении. У меня есть код, где я улавливаю все данные $ _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 

В конце этого приложения файл, я потом обратно $ это -> _ сессию обратно в $ _SESSION, как это:

foreach ($in->_session as $key => $value) // STORE $_SESSION VALUES 
    { 
     $_SESSION[$key] = $value; 
    } 

Как я могу сбежать или сделать что-то еще с помощью GETS и POSTS, чтобы их можно было «безопасно» использовать в приложении. Иногда я использую это для доступа к базе данных или записи данных в базу данных, но я не уверен, что это безопасно.

Любое предложение?

+0

Посмотрите, как вам нужно, чтобы избежать Db инъекций и XSS инъекций, я бы рекомендуем стерилизовать значения, прежде чем хранить их в объекте, поскольку sql использует встроенную функцию sql escape, а для XSS вам нужно будет найти наиболее подходящую вам функцию. – talsibony

+0

ПОЧЕМУ вы делаете такие вещи? С таким подходом так много проблем (как известных, так и вероятных), что я не знаю с чего начать. – thomasb

+0

@ cosmo0: потому что я хочу передать все необходимые данные, погода - это сообщение, получение, сеанс или настройка конфигурации через один объект и просто использовать то, что мне нужно, где мне нужно. Но если есть лучшее решение для достижения этого, я буду использовать ti. – burtonium76

ответ

1

Вы хотите избежать значений, прежде чем хранить их в своем объекте, Я не уверен, почему вы хотите отменить исходные переменные, но в случае, если вы это сделаете, я бы рекомендовал хранить их исходные значения в других объектах для отладки

foreach ($_GET as $key => $value) // STORE $_GET VALUES 
     { 
      $this->_get[$key] = $this->escape($value); 
     } 

...

private function escape($value){ 
// ... here you will have to escape the xss or sql injections 
return $escapedValue; 

} 

здесь приятно читать artical о безопасности

PHP Security Cheat Sheet

1

Я рекомендую вам фильтровать и дезинфицировать свои значения из $_POST и $_GET перед хранением их в качестве объектов

чек на documentation и sanitize filters

Смежные вопросы