sql protectie
Ik ben bezig met een clan website aan het maken voor een spel.
Ik heb geen verstand van die nieuwe php en ik ben benieuwd of dit wel veilig genoeg is tegen sql injectie ?
Mvg andy
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
if(isset($_POST['gegevens'])) {
mysql_query("UPDATE ".DB_CHARS." SET voornaam='".$_POST['voornaam']."' WHERE accountnaam='".$char->accountnaam."'");
mysql_query("UPDATE ".DB_CHARS." SET achternaam='".$_POST['achternaam']."' WHERE accountnaam='".$char->accountnaam."'");
mysql_query("UPDATE ".DB_CHARS." SET day='".$_POST['day']."' WHERE accountnaam='".$char->accountnaam."'");
mysql_query("UPDATE ".DB_CHARS." SET month='".$_POST['month']."' WHERE accountnaam='".$char->accountnaam."'");
mysql_query("UPDATE ".DB_CHARS." SET year='".$_POST['year']."' WHERE accountnaam='".$char->accountnaam."'");
mysql_query("UPDATE ".DB_CHARS." SET taal='".$_POST['taal']."' WHERE accountnaam='".$char->accountnaam."'");
echo "Je gegevens zijn verandert.<br><br><meta http-equiv=Refresh content=1 ;url=index1.php?p=profile>";
}
?>
if(isset($_POST['gegevens'])) {
mysql_query("UPDATE ".DB_CHARS." SET voornaam='".$_POST['voornaam']."' WHERE accountnaam='".$char->accountnaam."'");
mysql_query("UPDATE ".DB_CHARS." SET achternaam='".$_POST['achternaam']."' WHERE accountnaam='".$char->accountnaam."'");
mysql_query("UPDATE ".DB_CHARS." SET day='".$_POST['day']."' WHERE accountnaam='".$char->accountnaam."'");
mysql_query("UPDATE ".DB_CHARS." SET month='".$_POST['month']."' WHERE accountnaam='".$char->accountnaam."'");
mysql_query("UPDATE ".DB_CHARS." SET year='".$_POST['year']."' WHERE accountnaam='".$char->accountnaam."'");
mysql_query("UPDATE ".DB_CHARS." SET taal='".$_POST['taal']."' WHERE accountnaam='".$char->accountnaam."'");
echo "Je gegevens zijn verandert.<br><br><meta http-equiv=Refresh content=1 ;url=index1.php?p=profile>";
}
?>
Waarom 6 query's als het in 1 query kan?
wat zou ik moeten doen om het wel beveiligt te maken ?
heb dit ook nog in de config staan
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
mysql_connect(DB_HOST,DB_USER,DB_PASS) or die (DB_CONNECTION_ERROR);
mysql_select_db(DB_NAME) or die (DB_DBSELECT_ERROR);
$locatie = $_SERVER['REQUEST_URI'];
$array = Array();
$array[] = "mysql";
$array[] = "MYSQL";
$array[] = ";";
$array[] = "}";
$array[] = "{";
$array[] = "INSERT";
$array[] = "insert";
$array[] = "DROPTABLE";
$array[] = "droptable";
$array[] = "TRUNCATE";
$array[] = "truncate";
$array[] = "DROP";
$array[] = "drop";
$array[] = "UPDATE";
$array[] = "update";
$array[] = "COOKIE";
$array[] = "cookie";
$array[] = "ENV";
$array[] = "env";
$array[] = "FILES";
$array[] = "files";
$array[] = "POST";
$array[] = "post";
$array[] = "REQUEST";
$array[] = "request";
$array[] = "SERVER";
$array[] = "server";
foreach($array As $foutbezig) {
if(eregi($foutbezig,$locatie)) {
exit("Je mag hier geen SQL Injectie doen!");
}
}
mysql_select_db(DB_NAME) or die (DB_DBSELECT_ERROR);
$locatie = $_SERVER['REQUEST_URI'];
$array = Array();
$array[] = "mysql";
$array[] = "MYSQL";
$array[] = ";";
$array[] = "}";
$array[] = "{";
$array[] = "INSERT";
$array[] = "insert";
$array[] = "DROPTABLE";
$array[] = "droptable";
$array[] = "TRUNCATE";
$array[] = "truncate";
$array[] = "DROP";
$array[] = "drop";
$array[] = "UPDATE";
$array[] = "update";
$array[] = "COOKIE";
$array[] = "cookie";
$array[] = "ENV";
$array[] = "env";
$array[] = "FILES";
$array[] = "files";
$array[] = "POST";
$array[] = "post";
$array[] = "REQUEST";
$array[] = "request";
$array[] = "SERVER";
$array[] = "server";
foreach($array As $foutbezig) {
if(eregi($foutbezig,$locatie)) {
exit("Je mag hier geen SQL Injectie doen!");
}
}
Gewijzigd op 13/07/2015 14:31:47 door andytjuh Bruggeman
En waarom niet direct overstappen op de functies van MySQLi of PDO?
Gewijzigd op 13/07/2015 14:33:57 door andytjuh Bruggeman
En om het geheel meteen wat overzichtelijker te maken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
mysql_query("UPDATE ".DB_CHARS."
SET voornaam='".mysql_real_escape_string($_POST['voornaam'])."',
achternaam='".mysql_real_escape_string($_POST['achternaam'])."',
day='".mysql_real_escape_string($_POST['day'])."',
month='".mysql_real_escape_string($_POST['month'])."',
year='".mysql_real_escape_string($_POST['year'])."',
taal='".mysql_real_escape_string($_POST['taal'])."
WHERE accountnaam='".$char->accountnaam."'
");
?>
mysql_query("UPDATE ".DB_CHARS."
SET voornaam='".mysql_real_escape_string($_POST['voornaam'])."',
achternaam='".mysql_real_escape_string($_POST['achternaam'])."',
day='".mysql_real_escape_string($_POST['day'])."',
month='".mysql_real_escape_string($_POST['month'])."',
year='".mysql_real_escape_string($_POST['year'])."',
taal='".mysql_real_escape_string($_POST['taal'])."
WHERE accountnaam='".$char->accountnaam."'
");
?>
Maar er breekt een tijd aan dat de MySQL-functies niet meer zullen werken, dus het kan geen kwaad om alsnog de overstap te maken.
Gewijzigd op 13/07/2015 14:38:37 door - Ariën -
Ik zou wel graag de nieuwe php willen leren...
Maar ik zit echt met de oude php in me hoofd en krijg het er op 1 of ander manier het er niet echt uit.
Verder kan je op http://phptuts.nl/view/26/ een tutorial vinden over MySQLi.
Verder als je met de tijd mee wilt gaan, dan is het aan te raden om je te verdiepen in de migratie-changelog's van PHP. Hierin staat beschreven welke functies aangepast worden, welke toegevoegd worden en wat er verwijderd wordt.
http://php.net/manual/en/migration54.php
http://php.net/manual/en/migration55.php
http://php.net/manual/en/migration56.php
Gewijzigd op 13/07/2015 14:43:00 door - Ariën -
Okee dankje wel :)