Is dit veilig?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robin Peters

Robin Peters

16/02/2006 22:40:00
Quote Anchor link
Hallo,

Ik heb het onderstaande deel gemaakt maar ben eigenlijk benieuwt of dit wel veilig is, als iemand tips/verbetering heeft hoor ik het graag.

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
<?php
require_once("config/config.php");

$sql = "
SELECT
users.id,
staff.userid,
staff.forgameid,
staff.position

FROM
users,
staff

WHERE
users.id = staff.userid

AND
staff.forgameid = "
. $_GET['gameid']"

AND
users.id = "
. $_SESSION['id'] . "";

$res = mysql_query($sql) or die (mysql_error());
while($list = mysql_fetch_object($res)) {

    if($list->active >= "2"){
    //De pagina die iemand mag zien als zijn active 2 of hoger is
    }
    else{
    //De pagina die iemand te zien krijgt wanner zijn active lager is dan 2
    }
}

    
?>
 
PHP hulp

PHP hulp

25/11/2024 00:27:32
 
Alfred -

Alfred -

16/02/2006 22:44:00
Quote Anchor link
Neen. Je hebt een $_GET in je query => MySQL injection!

Edit:
Tutorial: MySQL Injection
Gewijzigd op 16/02/2006 22:46:00 door Alfred -
 
Klaasjan Boven

Klaasjan Boven

16/02/2006 22:47:00
Quote Anchor link
nee ik zou eerst met name user.id bekijken wat erinstaat voordat ik hem in mijn Query gebruik.

Jou url wordt strax iets als www.site.......user.id=1234

wat nou als iemand daar van maakt

www.site.......user.id=1234 AND DROP $db

dan ziet je query er ineens heel anders uit.

Dus maak een lijstje waar hij aan moet voldoen en check hem daarop voordat je hem in je sql zet
 
Stefan

Stefan

16/02/2006 22:57:00
Quote Anchor link
Ik zou als ik jou was een is_numeric($_GET['gameid'])

doen, dan weet je zeker dat het alleen een cijfer is en niet dat drop erachter.
 
Robin Peters

Robin Peters

16/02/2006 23:12:00
Quote Anchor link
Ok, zou iemand voor mij ff zoon voorbeeldje willen maken?

Gameid word meegegeven in de url

hij moet dus kijken of de user voor dat gameid is door tabbel staff.forgameid als dat zo is dan moet er gekeken worden of de staff.active 2 of hoger is, zoja mag hij (a) zien zo nee mag hij (b) zien.
 

16/02/2006 23:21:00
Quote Anchor link
of is_int($_GET['gameid']),
is ongeveer hetzelfde,
dat is het groote gemak van numerieke input versus sql-injection: je checked of het numeriek is, zoniet, stoppen, zowel, doorgaan

want er zijn zover ik weet geen commando's in mysql waar ook maar enig cijfer in zit
 
EdwinG

EdwinG

16/02/2006 23:23:00
Quote Anchor link
onder require_once de volgende regel toevoegen:

if ( !is_numeric($_GET['gameid']) || !is_numeric($_SESSION['id']) )
{
die('Ingevoerde waardes kloppen niet ');
}
 
Hipska BE

Hipska BE

16/02/2006 23:23:00
Quote Anchor link
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
38
39
40
41
42
43
44
45
<?php
require_once("config/config.php");

if(is_numeric($_GET['gameid'])){
$sql = "
SELECT
users.id,
staff.userid,
staff.forgameid,
staff.position

FROM
users,
staff

WHERE
users.id = staff.userid

AND
staff.forgameid = "
. $_GET['gameid']"

AND
users.id = "
. $_SESSION['id'] . "

LIMIT 1"
;

$res = mysql_query($sql) or die (mysql_error());
$list = mysql_fetch_object($res);

    if($list->active >= "2"){
    //De pagina die iemand mag zien als zijn active 2 of hoger is
    }
    else{
    //De pagina die iemand te zien krijgt wanner zijn active lager is dan 2
    }


}
elseif(!isset($_GET['gameid'])){
     // indexpagina
}else{
    //pagina wordt gehackt
    echo 'Hacking attemp!';
    exit;
}

?>

Edit 1: ik denk niet dat je meer dan 1 rij hebt, dan kan het ook zo
Edit 2: typo in code
Gewijzigd op 16/02/2006 23:29:00 door Hipska BE
 
EdwinG

EdwinG

16/02/2006 23:25:00
Quote Anchor link
Gijs:
[...]
want er zijn zover ik weet geen commando's in mysql waar ook maar enig cijfer in zit


Als er cijfers in zouden zitten, zou dat nog geen probleem vormen. Pas als de hele opdracht uit ALLEEN MAAR cijfers bestaat zou je met een integer problemen kunnen krijgen.

Als je een cijfer in je qeury wilt hebben, hoef je alleen maar
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
limit 0,987654321

toe te voegen
 



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.