View difference between Paste ID: KWbDpeJX and yTDuRjCH
SHOW: | | - or go back to the newest paste.
1
<?php
2
class Firewall{
3
	public function __construct() {
4-
	public function __construct(){
4+
		// O isset elimina a necessidade da supressão de erros(@)
5-
		if(@$_POST['firewall'] == 'cancelar'){
5+
		// Invertendo a condição elimina a necessidade de um if vazio
6-
			//NÃO FAZ NADA
6+
		if(isset($_POST['firewall']) and $_POST['firewall'] != 'cancelar') {
7-
		}else{
7+
8-
			
8+
9
			} else if ($_GET) {
10
				$this->get();
11-
			} else if ($_GET){
11+
12
		}		
13
	}
14
15
    // Definindo visibilidade para todos os métodos (boa prática)
16
    public function post() {
17-
	function post(){
17+
        // aqui provavelmente poderíamos trocar esses loops aninhados por algo como um array_map, eliminando o else
18
		foreach ($_POST as $chave => $valor){
19
			if(is_array($valor)) {
20
				foreach ($valor as $chave2 => $valor2) {
21
					$_POST[$chave2] = $this->antiInjection($valor2);
22
				}
23-
			}else{
23+
			} else {
24
				$_POST[$chave] = $this->antiInjection($valor);
25
			}
26
				
27-
		}return;
27+
        }
28
        
29
        return;
30-
	function get(){
30+
31
32
	public function get() {
33
		foreach ($_GET as $chave => $valor){
34
				
35
			if(is_array($valor)){
36
				foreach ($valor as $chave2 => $valor2){
37
					$_POST[$chave2] = $this->antiInjection($valor2);
38
				}
39
			}
40
			else { $_GET[$chave] = $this->antiInjection($valor);
41-
		} return;
41+
42
				
43
        } 
44-
	function antiInjection($valor) {
44+
        
45
        return;
46
	}
47
48
    public function antiInjection($valor) {
49
        /* Algumas colocações:
50
         * 1 - esqueça a linha do preg_replace. Ela se baseia em blacklist e não é uma boa idéia. 
51
         * 2 - Para prevenir SQL Injection a melhor saída é usar um prepared statemant (via PDO, por exemplo)
52
         * 3 - Seria nesse método que usaríamos a filter
53
         */
54
		$valor = preg_replace("/(from|select|insert|delete|where|drop table|show tables|show databases|describe|left join|right join|inner join|#|\*|--|\\\\)/i", "", $valor);
55
		$valor = trim($valor);
56
		$valor = strip_tags($valor);
57
		$valor = addslashes($valor);
58
59
		return $valor;
60
	}
61
}
62
63
$fw = new Firewall();