Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy dodawanie komentarzy w systemie newsów phpns jest bezpieczne?
Forum PHP.pl > Forum > PHP
Userr
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)?
nospor
Przeciez ten warunek:
if ($clean == TRUE) {
$query = clean_data($query); //clean
}
nigdy nie jest spelniony. A nawet jakby byl to by clean_data() robila cuda na kiju a nie zabezpieczala zapytanie w formie w jakiej masz...
Userr
Zakładając więc, że phpns nie jest zbyt bezpieczny jeżeli chodzi o pisanie komentarzy, bezpieczniejszym rozwiązaniem wydaje się skorzystanie z jakiegoś zewnętrznego systemu komentarzy (pewnie wybrałbym Disqus). Dodam, że u mnie na stronie sprawa będzie trochę bardziej złożona, ponieważ będę chciał wdrożyć forum i shoutbox:
Temat: Wstawienie forum w subdomene a shoutbox na strone glowna

i chciałbym, żeby użytkownik mógł z jednego konta pisać na forum, w shouboxie i właśnie komentarze pod newsami. Widzę więc w tej chwili zasadniczo dwa rozwiązania:

1) Wordpress (newsy) + Disqus (komentarze) + phpBB* (forum i shoutbox)
2) Phpns (newsy) + Disqus (komentarze) + phpBB* (forum i shoutbox)

1) rozwiązanie jest o tyle lepsze, że łatwiej będzie pewnie znaleźć jakieś pluginy/mosty integrujące te trzy systemy (każdy z nich jest popularny), natomiast jest taka kwestia, że mam już na stronie newsy w phpns (na razie bez komentarzy) i jeżeli chciałbym przejść z Phpns na Wordpress to musiałbym pewnie napisać skrypt, który przeniesie zawartość tabeli przechowującej newsy w phpns do tabeli przechowujące newsy w Wordpressie. I tak się właśnie zastanawiam, że może nie byłoby to aż takie ciężkie do napisania? Wydaje mi się nawet prawdopodobne, że byłoby łatwiej napisać coś takiego, niż samemu zintegrować Phpns z Disqus i phpBB gdybym wybrał 2) rozwiązanie (bo pewnie nie istnieją żadne oficjalne pluginy integrujące to - Phpns to dość mało znany system, co więcej już chyba nie rozwijany)? Priorytetem jest dla mnie, żeby to w miarę szybko zaimplementować, żebym nie musiał nad tym siedzieć dwa miesiące smile.gif

*na ten moment wybrałbym phpBB, ale się przy nim nie upieram. Może wybiorę któryś z tych: SMF 2, MyBB, XenForo lub IPB.

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.