bom pessoal tento trabalhar em MVC mas não sei se estou trabalhando de maneira correta tenho um arquivo que recebe todas minhas requisições seja ela quais forem ele instancia o Receive e da o load nas bibliotecas aqui coloquei só uma biblioteca (musica: musicaView musicaModel e musicaController).
recebe um array ou um array de objetos que é transformado em json para ser trabalhado no JS
O Receive ao ser iniciado já cria os parametros que serão utilizados nas querys com o banco esses parametros são passados por get então (?) tem como alguém fazer um injection no meu banco alterando esses parametros já que e esses serão utilizados diretamente no meu banco?
root/application/Receive.php
class Receive {
private $arr;
function Receive(){
$params = new Request();
$params = $params->getActionsRequest();
$obj = isset($params['obj']) ? $params['obj'] : null;
$q = isset($params['q']) ? $params['q'] : null;;
$condicoes = isset($params['where']) ? $params['where'] : null;
$order = isset($params['order']) ? $params['order'] : null;
$limit = isset($params['limit']) ? $params['limit'] : null;
eval("\$view = new $obj(); ");
switch($q){
case 'insert':
$this->arr = $view->doInsert();
break;
case 'delete':
$this->arr = $view->doDelete();
break;
case 'update':
$this->arr = $view->doUpdate();
break;
case 'getlist':
$this->arr = $view->doGetList($condicoes,$order,$limit);
break;
default:
$this->arr['error'] = 'Ação desconhecida';
break;
}
}
public function getArr(){
return $this->arr;
}
}
O arquivo Request é responsavel por receber todos os posts e gets enviados esses dados também vem do js se forem alterados os valores aqui também pode sofrer algum tipo de ataque?
essa é uma classe importante ela que praticamente cria os objetos e as ações de toda a aplicação.
class Request {
public function postObjectRequest($obj){
$class_name = get_class($obj);
eval("\$obj = new $class_name();");
foreach ($_POST as $key=>$value){
if(isset($_POST[$key])) eval("\$this->$class_name\->$key = \$value;");
}
return $obj;
}
public function getActionsRequest(){
$r = null;
foreach ($_GET as $key=>$value){
if(isset($_GET[$key])) eval("\$r['$key'] = \$value;");
}
return $r;
}
}
Musica view irá ser responsavel por qualquer ação do sistema e retornará um array contendo erros ou objeto (s)
root/application/views/MusicaView.php
class MusicaView {
private $MusicaModel;
private $MusicaController;
public function MusicaView(){
$this->MusicaModel = new MusicaModel();
$Request = new Request();
$this->MusicaModel = $Request->postObjectRequest($this->MusicaModel);
$this->MusicaController = new MusicaController();
}
public function doInsert(){
return $this->MusicaController->doInsert($this->MusicaModel);
}
public function doDelete(){
return $this->MusicaController->doDelete($this->MusicaModel);
}
public function doUpdate(){
return $this->MusicaController->doUpdate($this->MusicaModel);
}
public function doGetList($condicoes = null, $order = null, $limit = null){
return $this->MusicaController->doGetList($this->MusicaModel,$condicoes,$order,$limit);
}
}
MusicaModel irá conter os atributos especificos de cada classe
root/application/views/MusicaView.php
class MusicaModel {
public $id;
public $album_id;
public $nome;
public $embed;
}
e o MusicaController seria encarregado de qualquer interação com DB atraves de uma classe dao
class MusicaController {
private $DAO;
function MusicaController(){
$this->DAO = new DAO();
}
public function doInsert($obj){
return false;
}
public function doDelete($obj){
return false;
}
public function doUpdate($obj){
return false;
}
public function doGetList($obj,$condicoes = null, $order = null, $limit = null){
$arr = $this->DAO->getList($obj,$condicoes, $order, $limit);
return $arr;
}
}
essa classe dao php sim é resposavel por toda e qualquer interação com o banco.
ainda não terminei todas as funções mas não falta muito e esse também não é o foco da minha discução
E aqui vai recebendo um parametro por post/get tem como alguém lançar um injection no meu banco?
já que esses estaão diretamente ligados ao DB, oque posso fazer para me prevenir disso.
com relação a captcha já estou implementando mas isso também não tem muito haver com a questão.
agora com relação a lógica funciona mas estou trabalhando de maneira correta estava tentando utilizar o zend framework mas não obtive sucesso não consegui criar nada utilizando o framework só erros que não sei nem explicar.
Pergunta
Eric Freitas
bom pessoal tento trabalhar em MVC mas não sei se estou trabalhando de maneira correta tenho um arquivo que recebe todas minhas requisições seja ela quais forem ele instancia o Receive e da o load nas bibliotecas aqui coloquei só uma biblioteca (musica: musicaView musicaModel e musicaController).
recebe um array ou um array de objetos que é transformado em json para ser trabalhado no JS
root/ajax/search.php
O Receive ao ser iniciado já cria os parametros que serão utilizados nas querys com o banco esses parametros são passados por get então (?) tem como alguém fazer um injection no meu banco alterando esses parametros já que e esses serão utilizados diretamente no meu banco? root/application/Receive.php O arquivo Request é responsavel por receber todos os posts e gets enviados esses dados também vem do js se forem alterados os valores aqui também pode sofrer algum tipo de ataque? essa é uma classe importante ela que praticamente cria os objetos e as ações de toda a aplicação. Musica view irá ser responsavel por qualquer ação do sistema e retornará um array contendo erros ou objeto (s) root/application/views/MusicaView.php MusicaModel irá conter os atributos especificos de cada classe root/application/views/MusicaView.php e o MusicaController seria encarregado de qualquer interação com DB atraves de uma classe dao essa classe dao php sim é resposavel por toda e qualquer interação com o banco. ainda não terminei todas as funções mas não falta muito e esse também não é o foco da minha discuçãodesde já agradesso por terem lido tudo isso xD
E aqui vai recebendo um parametro por post/get tem como alguém lançar um injection no meu banco?
já que esses estaão diretamente ligados ao DB, oque posso fazer para me prevenir disso.
com relação a captcha já estou implementando mas isso também não tem muito haver com a questão.
agora com relação a lógica funciona mas estou trabalhando de maneira correta estava tentando utilizar o zend framework mas não obtive sucesso não consegui criar nada utilizando o framework só erros que não sei nem explicar.
bom novamente obrigado!
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.