Czy dodawanie komentarzy w systemie newsów phpns jest bezpieczne?

0

Korzystam na stronie z systemu newsów phpns (który niestety nie jest już chyba rozwijany):
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:

$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:

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ę:

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)?

1

A dodaj sobie zewnętrzny system komentarzy (Disqus) i będziesz miał święty spokój. W tym co wrzuciłeś są jakieś zabezpieczenia, ale nie chce mi się sprawdzać czy czasem nie dziurawe.

1

To clean_query nigdy się nie wykona - to raczej jakiś śmieć, którego autor zapomniał wyrzucić. Gdyby się wykonało, to żadno zapytanie by nie przeszło poprawnie. Nie tam bym szukał zabezpieczeń, a raczej w miejscu, w którym powstają zmienne w $data, $author, itd. Ale wygląda to źle, bardzo źle. Nie korzystaj z tego.

0

A ciężko byłoby zintegrować taki zewnętrzny system komentarzy (Disqus) z tym systemem newsów phpns (który do samych newsów nie jest chyba taki zły)?

1

Disqus polega właśnie na tym, że NIE korzysta się z kont na stronach, na której są komentarze, tylko z globalnego konta Disqus, które pozwala Ci komentować w "całym internecie" z jednego konta.

który do samych newsów nie jest chyba taki zły

Patrząc na kod z komentarzy - nie byłbym tego taki pewien.

1

Dużo pracy z doprowadzeniem tego do stanu bezpiecznej użyteczności raczej by nie było. Wystarczy chociażby przefiltrować dane od userów i zbindować parametry do zapytania za pomocą PDO.

0

I tak właśnie się zastawiam, po co się pchać w tego Disqus, skoro Wordpress też przecież ma swoje komentarze (i nie wymaga zakładania globalnego konta), a co ważniejsze istnieją oficjalne pluginy integrujące go z phpBB:
https://pl.wordpress.org/plugins/tags/phpbb

Najpopularniejszym jest chyba WP-United:
https://pl.wordpress.org/plugins/wp-united/

Czy ktoś z Was z tego korzystał, czy moglibyście polecić to rozwiązanie? Może znacie jakiś inny ciekawy most integrujący phpBB z Wordpressem, który moglibyście polecić?

1 użytkowników online, w tym zalogowanych: 0, gości: 1