Jump to content
php.lv forumi

MySQL injekcijas


ArnisR

Recommended Posts

Tātad man ir PHP mājas lapa, kuras dati un saturs tiek glabāts MySQL datubāzē. Mājas lapā ir gan komentēšanas forma, gan $_GET mainīgie. Kas būtu jādara, lai izsargātos no SQL injekcijām un kādi ir tie paņēmieni, lai aizsargātu savu web lapu? Šajā ziņā esmu iesācējs, tāpēc ceru uz palīdzību. Paldies!

Link to comment
Share on other sites

Paldies par mysql_real_escape_string(); funkciju!

 

Bet ir vēl viena funkcija, ar kuru it kā tiek pārbaudīts, lai GET mainīgajā 'category' būtu tikai naturālie skaitļi, pretējā gadījumā redirekts uz galveno lapu.

 

if(!preg_match("|^[\d]+$|", $_GET["category"])){header("Location: ./"); exit();}

 

Vai ar to pietiek, lai izsargātos no SQL injekcijām?

Link to comment
Share on other sites

Cik diskusijas jau te ir bijušas par šo tēmu?

 

Veseliem skaitļiem - intval()

Decimāldaļskaitļiem - floatval() vai vismaz number_format()

Stringiem - mysql_real_escape_string()

 

Mainīgo validācija jau ir cits jautājums. Manuprāt, tev pilnīgi pietiek pārbaudīt vai mainīgais $_GET['category'] eksistē, tālāk, ja tam jābūt ciparam, liekam kverijā, izlaižot caur intval() (ja $_GET['category'] nav skaitliska vērtība, tad intval() atgiezīs 0) un skatamies vai kaut kas tika atselektēts no datubāzes. Ja datubāze neko neatgriež (tā tas visdrīzāk būs arī seleketējot pie id=0), tad mainīgais līks un vispār viss līks, un metam erroru vai redirektojam, vai vispār ejam sist klientu. Kaut kā tā.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...