Centar za edukaciju-BiH



#1 31.07.2020 08:57
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,813


Predmet:zastita kod logiranja
Nakon sto korisnik ispise podatke logiranja na login formi podaci se salju u upit i pretrazuje baza. Korisnik moze unijeti zlonamjeran kod i ostetiti bazu podataka. Iz toga razloga login podatke potrebno je filtrirati.

Sada mi je napisana funkcija:

PreuzmiIzvorni kôd (Text):
  1. function e($val)
  2. {
  3.         global $con;
  4.         return mysqli_real_escape_string($con, trim($val));
  5. }

koja se poziva na nacin:

PreuzmiIzvorni kôd (Text):
  1. $korisnik = e($_POST['korisnik']);
  2. $sifra = e($_POST['sifra']);

sada kada je varijabla $korisnik i $sifra procisceni mozemo izvrsiti mysql upit:

$query = "SELECT * FROM korisnici WHERE korisnik='$korisnik' AND sifra='$sifra' LIMIT 1";


procitao sam da se jos koristi:

PreuzmiIzvorni kôd (Text):
  1. function provjera ($str) {
  2.     return htmlspecialchars ($str, ENT_QUOTES);
  3. }

i

PreuzmiIzvorni kôd (Text):
  1. function provjera($var) {
  2.  $var = addslashes(trim($var));
  3.  return $var;
  4. }


PreuzmiIzvorni kôd (Text):
  1. function safe($value) {
  2.        if (get_magic_quotes_gpc());
  3.        $value = stripslashes($value);
  4.        if (!is_numeric($value))
  5.        $value = " ' " . mysql_real_escape_string($value) . " ' ";
  6. return $value;
  7. }

PreuzmiIzvorni kôd (Text):
  1. function safe_file ($str, $ext) {
  2.     //ako ima znakova ‘\’, ‘/’ vrati 0
  3.     for ($i = 0; $i < strlen($str); $i++) {
  4.         switch ($str[$i]) {
  5.           case ‘\\’:
  6.           case ‘\/’:
  7.           return 0;
  8.         }
  9.      }
  10.      //extenzija iz string-a
  11.      $temp = split (‘\.’, $str);
  12.      $EXT = $temp[count($temp)-1];
  13.      $b = false;
  14.      //dali extenzija iz stringa postoji u nizu dopuÅ¡tenih
  15.      for ($i = 0; $i < count($ext); $i++) {
  16.               if (strtolower($EXT) == strtolower($ext[$i])) {
  17.                        $b = true;
  18.                        break;
  19.                }
  20.       }
  21.       return $b;
  22. }

md5(sha1($salt.$password)); ili crypt($salt, md5($password));

Å ta je meni sve potrebno od ovoga gore i kako to sve sloziti u jednu funkciju?
zivot je moja domovina.
↑  ↓

#2 03.08.2020 00:47
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Re: zastita kod logiranja
mysqli_real_escape_string - izbjegava posebne znakove u nizu za upotrebu u SQL upitu.
Ova se funkcija koristi za stvaranje legalnog SQL niza koji se može koristiti u SQL izrazu.

Funkcija htmlspecialchars () pretvara neke unaprijed definirane znakove u HTML entitete.
Unaprijed definirani znakovi su:
& (ampersand) postaje & amp;
"(dvostruki navod) postaje & quot;
'(jedna citata) postaje & # 039;
<(manje od) postaje & lt;
> (veći od) postaje & gt;

addslashes() vraća niz s kosim crtama pred unaprijed definiranim znakovima.

Unaprijed definirani znakovi su:

jedan citat (')
dvostruki navod (")
kosa crta unazad (\)

Ako si primjetio vecina funkcija rade jednu te istu stvar odnosno skoro jedno te isto.
Sto se tice upisa u bazu najveci problem su znakovi koji se koriste na nivou sql-a odnosno predstavljaju nesto u skriptnom jeziku SQL.
Nevidm da se bas moze ubaciti zlonamjeran kod i ostetiti bazu podataka.
Naravno da moze doci do greske pri izvodjenju.
Primjer:
Neka nam je ime tabele korisnici koja ima polja
ID,Korisnicko_ime, sifra.

Ako iamo korisnicko_ime Marko a sifra '"1hs$

Sada da pokusamo napraviti select SQL string.
SQL="SELECT ID, korisnicko_ime, sifra FROM korinici WHERE ime='Marko' AND sifra =' '"1hs$";

Sad se vidi o cemu se radi.
Da bi poslali SQL string bazi moramo ga oiviciti sa znakom za string ali ta j znak imamo i samoj sifri tako da nism u mogucnosti ispravno napisati string.
U ovom slucaju bi mogli iskoristiti funkciju mysqli_real_escape_string.

Ako treba mogu jos ddati pojasnjenja.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#3 03.08.2020 09:29
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,813


Predmet:Re: zastita kod logiranja
netreba pojasnjenje samo treba mi reci dali je dovoljno ovo dvoje:

PreuzmiIzvorni kôd (Text):
  1. function e($val)
  2. {
  3.         global $con;
  4.         return mysqli_real_escape_string($con, trim($val));
  5. }
  6.  
  7. function provjera ($str) {
  8.     return htmlspecialchars ($str, ENT_QUOTES);
  9. }

i treba mi kod login forme ograniciti ime korisnika samo na brojeve.

hvala
zivot je moja domovina.
↑  ↓

#4 05.08.2020 07:58
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Re: zastita kod logiranja
PreuzmiIzvorni kôd (HTML):
  1. function provjera ($str) {
  2.     return htmlspecialchars ($str, ENT_QUOTES);
  3. }
Ovaj ti bas i nije potreban.
brojeve mozes rijesiti n nivou html-a

<input type="number" />
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

Stranice (1):1


Sva vremena su GMT +01:00. Trenutno vrijeme: 5: 07 pm.