Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czy dodawanie komentarzy w systemie newsów phpns jest bezpieczne?
Userr
post
Post #1





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 27.10.2015

Ostrzeżenie: (0%)
-----


Korzystam na stronie z systemu newsów phpns:
http://sourceforge.net/projects/phpns/

Do samych newsów system spisuje się dobrze, ale chciałbym włączyć komentarze pod newsami i nie jestem pewny co do bezpieczeństwa. Phpns nie wykorzystuje bowiem PDO tylko zwykły MySQL do operacji na bazach danych. Ma co prawda jakieś zabezpieczenia:

Kod
$new_res = general_query('INSERT INTO '.$databaseinfo['prefix'].'articles
                    (article_title,
                    article_subtitle,
                    article_author,
                    article_cat,
                    article_text,
                    article_exptext,
                    article_imgid,
                    allow_comments,
                    start_date,
                    end_date,
                    active,
                    approved,
                    timestamp,
                    ip)
              VALUES ("'.$data['article_title'].'",
                      "'.$data['article_subtitle'].'",
                      "'.$author.'",
                      "'.$data['article_cat'].'",
                      "'.$data['article_text'].'",
                      "'.$data['article_exptext'].'",
                      "http://'.$globalvars['path_to_uri'].'/'.$data['image'].'",
                      "'.$data['acchecked'].'",
                      "'.$unixtime['start']['unix'].'",
                      "'.$unixtime['end']['unix'].'",
                      "'.$data['achecked'].'",
                      "'.$data['approved'].'",
                      "'.$globalvars['time'].'",
                      "'.$news_ip.'");');


Następnie w funkcji general_query() wywoływana jest funkcja clean_data(), która jak sądzę (może błędnie?) jest jakimś zabezpieczeniem:

Kod
    function general_query($query,$array=FALSE) { //for simple/misc queries
        
                if ($clean == TRUE) {
                    $query = clean_data($query); //clean
                }
                
            $res = mysql_query($query) or die('<p><textarea style="width: 50%; height: 200px;">FAILED QUERY: '.$query.'
            
            '.mysql_error().'</textarea></p>');
            //return value or not?
                if ($array == TRUE) { //if we want a value
                    $value = mysql_fetch_array($res);
                    return $value;
                } else {
                    return $res;
                }
        }


Funkcja clean_data() ma taką definicję:

Kod
    function clean_data($data) {
        if (is_array($data)) {
            foreach ($data as $key => $value) {
                if(ini_get('magic_quotes_gpc')) { $data[$key] = stripslashes($value); }
                $data[$key] = htmlspecialchars($value, ENT_QUOTES);
                }
        } else {
            if(ini_get('magic_quotes_gpc')) { $data = stripslashes($data); }
            $data = htmlspecialchars($data, ENT_QUOTES);
        }
        
        return $data;
    }


Czy Waszym zdaniem takie zabezpieczenia starczą, żeby np. ktoś nie skasował mi całej bazy danych? A może jedynym wyjściem będzie przejście np. na Wordpress (który pewnie korzysta z PDO)?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 09:19