sql protectie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Andytjuh Bruggeman

andytjuh Bruggeman

13/07/2015 14:24:26
Quote Anchor link
Hallo,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>";
    }

?>

 
PHP hulp

PHP hulp

30/04/2024 09:30:46
 
- SanThe -

- SanThe -

13/07/2015 14:29:05
Quote Anchor link
Nee, er zit geen enkele beveiliging in.
Waarom 6 query's als het in 1 query kan?
 
Andytjuh Bruggeman

andytjuh Bruggeman

13/07/2015 14:30:23
Quote Anchor link
Omdat ik dit overzichtelijker vind het is niet echt voor een bepaalde doel eind en meer alleen voor een aantal clan leden

wat zou ik moeten doen om het wel beveiligt te maken ?
heb dit ook nog in de config staan

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
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!");
}
}
Gewijzigd op 13/07/2015 14:31:47 door andytjuh Bruggeman
 
- Ariën  -
Beheerder

- Ariën -

13/07/2015 14:30:39
Quote Anchor link
En waarom niet direct overstappen op de functies van MySQLi of PDO?
 
Andytjuh Bruggeman

andytjuh Bruggeman

13/07/2015 14:33:39
Quote Anchor link
Omdat ik daar niks van snap heb altijd met deze php gewerkt
Gewijzigd op 13/07/2015 14:33:57 door andytjuh Bruggeman
 
- Ariën  -
Beheerder

- Ariën -

13/07/2015 14:35:12
Quote Anchor link
Gebruik mysql_query_escape_string() om je aanpasbare waardes die je meegeeft in je query, zoals je $_POST.
En om het geheel meteen wat overzichtelijker te maken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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."'
"
);
?>

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 -
 
Andytjuh Bruggeman

andytjuh Bruggeman

13/07/2015 14:38:02
Quote Anchor link
Oohja dat was het mysql_real_escape_string bedankt!

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.
 
- Ariën  -
Beheerder

- Ariën -

13/07/2015 14:42:34
Quote Anchor link
Ten eerste mag je die hele lap code van je met die array en de eregi's weggooien. Waarom wou je speciale woorden filteren, terwijl je juist deze input onschadelijk wilt laten maken (wat mysql_real_escape_string doet).

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 -
 
Andytjuh Bruggeman

andytjuh Bruggeman

13/07/2015 15:14:59
Quote Anchor link
Okee dankje wel :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.