Prikazi cijelu temu 07.06.2017 11:13
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Lokacija:zagreb


Predmet:Re: Php Mssql
Varijable je potrebno prije upotrebe pažljivo provjeravati,
npr. putem PHP funkcije htmlentities koja konvertira sve potencijalno
opasne znakove u oblik koji nije Å¡tetan.

<script src=‘http://x.com/hack.js’></script><script>hack();</script>

Ako se ovakva skripta učita ona izvodi zlonamjernu funkciju, no ako je proÅ¡la kroz htmlentites, mijenja se u potpuno bezopasan string:

<script src=‘http://x.com/hack.js’> </script><script>hack();</script>

Ukoliko se ispisuje bilo Å¡to Å¡to korisnik unosi, bez obzira da li je neposredno ili nakon unosa u bazu podataka, prvo je potrebno pročistiti upotrebom funkcije htmlentities

htmlentites(mysql_fix_string($conn, $string))

npr.
PreuzmiIzvorni kôd (PHP):
  1. <?php
  2. require_once 'login.php';
  3. $conn=new mysqli($hn, $un, $pw, $db);
  4. if($conn->connect_error) die ($conn->connect_error);
  5. $user=htmlentities(mysql_fix_string($conn, $_POST[‘user’]));
  6. $pass=htmlentities(mysql_fix_string($conn, $_POST[‘passr’]));
  7. $query=„SELECT * FROM users WHERE
  8. user=‘$user’ AND pass=‘$pass’;
  9. ...
  10. ?>

ja jos koristim i stripslashes
recimo imamo formu:

PreuzmiIzvorni kôd (PHP):
  1. <form action="." method="post">
  2. <input type="text" name="username" />
  3. <input type="submit" name="sbm" value="Posalji" />
  4. </form>

nakon ispunjavanja forme vrsi se upit:

$mysql = mysql_query ("SELECT * FROM `table` WHERE USER = $_POST[‘username’]");

pa tako ako ispunimo formu sa:

nitko; DROP TABLE `table`“ i kliknemo Posalji

mysql query bi izgledao: "SELECT * FROM `ṫable` WHERE USER = nitko; DROP TABLE `table`;"

i ode tabla

ja koristim funkciju koju sam smjestio na vrh body-a

PreuzmiIzvorni kôd (PHP):
  1. <body>
  2.  
  3. //==============
  4. //Pocetak funkcija
  5. //==============
  6.  
  7. function safe($value) {
  8.       if (get_magic_quotes_gpc()){ //dali je magic quptes ukljucen
  9.            $value = stripslashes($value); //ako je, ponisti sta je napravio
  10.            if (!is_numeric($value)){ //dali nije numericka vrjednost (dali je string?)
  11.                   $value = " ' " . mysql_real_escape_string($value) . " ' "; //ako je string, escapaj ga kako spada
  12.            }
  13.       }
  14.       return $value;
  15. }
  16.  
  17. //==============
  18. //pocetak php koda
  19. //==============
  20.  
  21. $mysql = mysql_query ("SELECT * FROM `table` WHERE USER = ". safe($_POST[‘username’]);
  22.  
  23. </body>

eto, neznam treba li ovo ovdje ili ne. Ako netreba ja cu obrisat.
zivot je moja domovina.