SQL injections vältimine
Puutusime kokku sellise probleemiga, et kui paha kasutaja tahab andmebaasi midagi halba sisestada.
Selle takistamiseks on mitmeid võimalusi.
Meie puhul oli tegemist veebivormiga, mis salvestas andmeid andmebaasi (php + mysql).
Kõigepealt kasutasime veebivormi kontrolli.
Sellest kirjutasin siin:
http://www.adaptorconsulting.com/eesti-javascript-form-validatation/?lang=ee
Lisan ka juurde, kui on soovi kontrollida, et tähed oleksid ainult tähed ja tühikud.
Siis selles variandis = alphanum_s
põhiosa:
"[^A-Za-z0-9øåæÆØÅ\\s]"
"[^A-Za-z0-9äöüõšžÕÄÖÜŠŽ\\s]"
Ehk siis lõppu kirjutada endale sobivad täpitähed.
Andmete savestamisel tuleb andmetele lisada kontroll-funktsioon:
function cleanQuery($string)
{
global $db;
if(get_magic_quotes_gpc()) // prevents duplicate backslashes
{
$string = stripslashes($string);
}
$badWords = array(“/delete/i”, “/update/i”,”/union/i”,”/insert/i”,”/drop/i”,”/http/i”,”/–/i”);
$string = preg_replace($badWords, “”, $string);
if (phpversion() >= ‘4.3.0’)
{
$string = mysqli_real_escape_string($db,$string);
}
else
{
$string = mysqli_escape_string($db,$string);
}
return $string;
}
ja koodis siis küsida:
if (isset($_POST['persons'])) $persons = cleanQuery($_POST['persons']);
Abi sain siit:
http://www.tech-evangelist.com/2007/11/05/preventing-sql-injection-attack/
http://phpcenter.eu/vaatafoorumiteemat.php?id=4896