Leaderboard skripta i moguća nesigurnost

Izrađujem igrice u JavaScriptu (2D jednostavne) pa sam došao do toga da mi je potrebno zapisati različita postignuća iliti napredak (score) u igricama. došao sam do jednog (php-mysql) rješenja no nisam siguran što još dodati kako ne bi ugrozio sigurnost. Nisam siguran ni da li je to rješenje prihvatljivo.
Znači čitanje postignuća radim preko ajax-a i fajla getscores.php u kojem se nalazi:

<?php
header('Access-Control-Allow-Origin: *');

$host="localhost"; // Host name 
$username="hosting_score"; // Mysql username 
$password="f8F?sta100ne500"; // Mysql password 
$db_name="hosting_mygamescores"; // Database name 
$tbl_name="patka_scores"; // Table name

// Connect to server and select database.
$link = mysqli_connect("$host", "$username", "$password")or die("cannot connect"); 
mysqli_select_db($link, "$db_name")or die("cannot select DB");

// Retrieve data from database 
$sql="SELECT * FROM $tbl_name ORDER BY score DESC LIMIT 10";
$result=mysqli_query($link, $sql);

// Start looping rows in mysql database.
while($rows=mysqli_fetch_array($result)){
echo $rows['name'] . "|" . $rows['score'] . "|";

// close while loop 
}

// close MySQL connection 
mysqli_close($link);
?>

i drugi fajl koji zapisuje podatke a kojem također pristupam preko ajax-a

<?php

$db = "hosting_mygamescores";//Your database name
$dbu = "hosting_score";//Your database username
$dbp = "f8F?sta100ne500";//Your database users' password
$host = "localhost";//MySQL server - usually localhost
$tbl_name="patka_scores"; // Table name

$dblink = mysqli_connect($host,$dbu,$dbp);
$seldb = mysqli_select_db($dblink,$db);

if(isset($_GET['name']) && isset($_GET['score'])){

     //Lightly sanitize the GET's to prevent SQL injections and possible XSS attacks
     $name = strip_tags(mysqli_real_escape_string($dblink,$_GET['name']));
     $score = strip_tags(mysqli_real_escape_string($dblink,$_GET['score']));
     $sql = mysqli_query($dblink,"INSERT INTO `$db`.`$tbl_name` (`id`,`name`,`score`) VALUES ('','$name','$score');");
     
     if($sql){
     
          //The query returned true - now do whatever you like here.
          echo 'Your score was saved. Congrats!';
          
     }else{
     
          //The query returned false - you might want to put some sort of error reporting here. Even logging the error to a text file is fine.
          echo 'There was a problem saving your score. Please try again later.';
          
     }
     
}else{
     echo 'Your name or score wasnt passed in the request.';
}

mysqli_close($dblink);//Close off the MySQL connection to save resources.
?>

Fajlove sam na jednom serveru strpo u cgi-bin folder, dok na drugom hostingu netje da radi u cgi-bin folderu pa sam postavio u drugi.
Svaki komentar je dobro došao. Tnx :slight_smile:

S ovom načinom moguće je da pojedinici upisuju score ručno preko url-a no nadam se da da takvi neće biti stalni gosti.

Bolje riješenje je PDO ili mysqli, takoder zamjeni GET request sa POST-om

tnx system32.
Pokušao sam osposobiti jednu skriptu s tehnologijama koje spominješ da radi na bilo kojem mom shared serveru no bezuspješno.
U pitanju je LeaderboardC2 rađen s Fat-Free framework

što nije radilo? nesto nisi dobro uradio jer je konekcija u principu ista dok je buildanje querya i dohvat rezultata malo drugačiji

stalno mi je izbacivalo error 500. Mislim da je u pitanju podrška za pdo i da nije podešeno na shared hostingu. Na drugom na kojem mogu sam uključiti isključiti php module sam sve uključio što se tiče pdp i mysqli no opet samo error 500. U svakom slučaju ta komponenta koju nisam uspio pokrenuti mi je višestruko bolja jer se lako i jednostavno povezuje s Construct2 programom i kroz jednostavne pluginove ubacuje ajax u igru. Također sam postavio php na 5.4 zbog uključenog safe mode na verziji 5.3 ,no nikakvih promjena.

Da nisu ostala podesavanja u apache .htaccess fajlu od prvobitnog servera npr. RewriteBase?

vrlo moguće, na to nisam obratio pažnju. Baš na tom serveru mi malo malo sakrije .htaccess fajl iako sam otkačio da mi prikazuje skrivene fajlove.
Tnx.

Zavisi kako (cime) se pristupa fajlovima. Na Linux-u su skriveni fajlovi koji pocinju sa tackom. Recimo listing direktorijuma koji sadrzi .htaccess fajl ga nece prikazati, ali isto tako komanda nano .htaccess ce ga otvoriti za editovanje iz shell-a.