PHP yapıcı aracılığıyla GET veri sterilize

4 Cevap php

Ben aşağıdaki kurucu var:

public function __construct(){
    foreach($_GET as $key=>$value){
        $_GET[$key] = addslashes($value);
    }
    $this->get = $_GET;
}

ve öyle gibi kullanılır:

$app->get['id']

Nerede 'id' yapıcı aracılığıyla tüm verileri sterilize iyi bir yolu var mı /> URL yoluyla geçirilen parametre.

4 Cevap

Bunu yapmak için biraz daha kısa yolu:

public function __construct(){
    $this->get = array_map('mysql_real_escape_string', $_GET);
}

Bunu neden yapıyorsun? SQL enjeksiyonu önlemek için?

Önlenmesi enjeksiyon sorgu yapı seviyesinde yapılmalı ve kesinlikle sadece tırnak, tüm tuhaf durumlarda değil çekecektir mysql_real_escape_string gibi bir daha alakalı fonksiyonu ile yapılmalıdır. Ne yapıyorsun burada beri PHP kaldırıldı rezil sihirli tırnak işlevselliği daha iyidir.

Bu istenmeyen HTML kaldırmak ve varsayılan değeri Döşeme:

public function __construct($striptags = true, $trim = true){
    foreach($_GET as $key=>$value){
        if ($striptags)
        {
            $_GET[$key] = strip_tags($value);
        }
        if ($trim)
        {
            $_GET[$key] = trim($value);
        }
    }
    $this->get = $_GET;
}

Varsayılan eylemler gibi gerekli kurucusuna false geçmek önlemek için.

Bilginize, addslahes() gerçekten daha fazla kullanılması gerekmez. Eğer DB veri kullanımını mysql_real_escape_string() veya DB özgü equivelant kaçan ile ilgili iseniz.

Eğer değişkenin türünü biliyorsanız size istenilen tip gibi bunu döküm olabilir bekliyorlar

$this->id = (int)$app->get['id']; //forces type to be integer