Wat denken jullie?
Pagina: « vorige 1 2 3 volgende »
Quote:
Let op voor SQL-injection.. In registreren.php kan dit dus...
Hoe kan je dat zien, voorzien en tegengaan?
Gewijzigd op 01/01/1970 01:00:00 door Jelle -
Kijk dan ma eens wat er gebeurt;)
GR. mebus!
edit:Registreren
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '\' \'\'\'' at line 1
Gewijzigd op 01/01/1970 01:00:00 door Mebus Hackintosh
ik gebruik altijd adslashes maar dat is dus niet goed?
**********************, ik zou maar oppassen!
tipje: volgende keer, meer rekening houden met SQL Injection! :D
Milo:
tipje: volgende keer, meer rekening houden met SQL Injection! :D
Volgens mij is dat niet echt om te lachen alleen ik ga er vanuit dat omdat er om het testen van een site gevraagd werd dat iemand een en ander getest heeft met een onbeveiligd invoerveld en dat dat op dit moment voor TS hele nare gevolgen heeft
Milo:
tipje: volgende keer, meer rekening houden met SQL Injection! :D
Ik weet niet of jij het was milo maar sql - injection is verboden!
tdr bla bla nog wat Je ken hier actie tegen ondernemen tegen de persoon die dit heeft gedaan!
Hierbij zou je contact op kunnen nemen met je host
@jordy Ik geloof van wel probeer het anders eens uit:)
wat je ook ken gebruiken is:
GR. mebus!
Het is prima om iemand te wijzen op mysql-injection, maar het is triest als je dan iemands database om zeep helpt. Ik vind dat niet echt lol.
Bedankt voor de tip,
addslashes gebruikte ik altijd al maar htmlspecialchars gebruikte ik alleen bij news posten edg. ik zal het ook gaan gebruiken bij kleinere teksten.
Ik gebruik altijd deze functie, werkt prima:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
function quote_smart($value)
{
// Stripslashes
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
// Quote if not integer
$value = mysql_real_escape_string($value);
return $value;
}
{
// Stripslashes
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
// Quote if not integer
$value = mysql_real_escape_string($value);
return $value;
}
Gewijzigd op 01/01/1970 01:00:00 door stien ss
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function quote_smart($value) {
if(get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
if(version_compare(phpversion(),"4.3.0") == "-1") {
return mysql_escape_string($value);
}
else {
return mysql_real_escape_string($value);
}
}
?>
function quote_smart($value) {
if(get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
if(version_compare(phpversion(),"4.3.0") == "-1") {
return mysql_escape_string($value);
}
else {
return mysql_real_escape_string($value);
}
}
?>
edit: spaties verwijderd
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Tdr93:
hahahahaha! Die is goed! 12, 13 jaar oud (bouwjaar '93) en dan denk je te weten hoe je vrouwen kunt onderhouden en hoe je daar een spel van kunt maken? De gemiddelde vrouw is gevaarlijker dan welk Doom3-monster dan ook! Maar ja, zie er maar eens van af te blijven...Ideeën?
Ik ga er ook nog bij maken, dat je een vriendin moet onderhouden enzo;)
Dus een relatie onderhouden, dmv cadeaus...
Ik ga er ook nog bij maken, dat je een vriendin moet onderhouden enzo;)
Dus een relatie onderhouden, dmv cadeaus...
SanThe:
Het is prima om iemand te wijzen op mysql-injection, maar het is triest als je dan iemands database om zeep helpt. Ik vind dat niet echt lol.
Ben ik met je eens alleen als je hier een siet laat checken doe je dat lijkt mij ook niet met live gegevens of maak je iig van te voren een backup. Je weet dat ook de veiligheid bekeken gaat worden, als deze niet (helemaal) goed is loop je risico dat er iets met je data/files gebeurd.
@mebus:
Zulke opmerkingen over injection kunnen in het vervolg beter via een pm. Breng je ook niemand op ideen
mebus:
Ik weet niet of jij het was milo maar sql - injection is verboden!
tdr bla bla nog wat Je ken hier actie tegen ondernemen tegen de persoon die dit heeft gedaan!
Hierbij zou je contact op kunnen nemen met je host
@jordy Ik geloof van wel probeer het anders eens uit:)
wat je ook ken gebruiken is:
GR. mebus!
Milo:
tipje: volgende keer, meer rekening houden met SQL Injection! :D
Ik weet niet of jij het was milo maar sql - injection is verboden!
tdr bla bla nog wat Je ken hier actie tegen ondernemen tegen de persoon die dit heeft gedaan!
Hierbij zou je contact op kunnen nemen met je host
@jordy Ik geloof van wel probeer het anders eens uit:)
wat je ook ken gebruiken is:
GR. mebus!
mebus, ik was het niet, was jij het?
mebus:
Zet maar eens een ' of een " in zo een invulvakje
Kijk dan ma eens wat er gebeurt;)
Kijk dan ma eens wat er gebeurt;)
En verder als je (alleen) htmlspecialchars gebruikt, zou SQL Injection je gewoon nog steeds kunnen overkomen. (?)
Gewijzigd op 01/01/1970 01:00:00 door Milo
Maakt mij niet uit wie het heeft gedaan, maar wie kan me dan helpen met mijn registreer script?
Dit is ie:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
require("connect.php"); // verbinding met de database maken
?>
<?php include("inc/inc_1.php"); ?>
<table class="border" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td>
<p class="title">Registreren</p>
<?php
// als het formulier nog niet is ingevuld
if(!isset($_POST['submit'])) {
?>
<form action="registreren.php" method="post">
<p class="content">
Naam:<br>
<input type="text" name="naam" size="15" maxlength="20" /><br />
Wachtwoord:<br>
<input type="password" name="wacht1" size="15" maxlength="30" /><br />
Wachtwoord (herhaling):<br>
<input type="password" name="wacht2" size="15" maxlength="30" /><br />
<input type="submit" name="submit" value="Registreer" /></p>
</form>
<?php
// formulier gepost, kijk of alle velden ook daadwerkelijk zijn ingevuld
} elseif(trim($_POST['naam']) <> "" && trim($_POST['wacht1']) <> "") {
// formulier ingevuld - kijk eerst of de gebruiker al bestaat
$naam = $_POST['naam'];
$res = mysql_query("SELECT * FROM users WHERE name='".$naam."'") or die(mysql_error());
if(mysql_num_rows($res) == 0) {
// geen resultaten - dit is wat we willen
// kijk of de opgegeven wachtwoorden overeenkomen
if(!strcmp($_POST['wacht1'], $_POST['wacht2'])) {
// wachtwoorden komen overeen - sla alle gegevens op in de database
// naam is al opgehaald uit het formulier
$wacht = md5($_POST['wacht1']); // versleuteld wachtwoord
$level = 1; // standaard gebruikersniveau
mysql_query("INSERT INTO users (name, pass, level, money, skill, posts) VALUES ('".$naam."','".$wacht."','".$level."', '250','10','0')") or die(mysql_error());
mysql_query("UPDATE users SET ip='".$_SERVER['REMOTE_ADDR']."' WHERE id=".$naam) or die(mysql_error());
// geef melding weer
?>
<p class="content">Je bent geregistreerd!<br />
Je kunt <a href="login.php">hier</a> inloggen.<br /></p>
<?php
} else {
// wachtwoorden komen niet overeen
?>
<p class="content">De twee opgegeven wachtwoorden zijn niet hetzelfde.<br />
Druk op de "back" knop van je browser en voer twee identieke wachtwoorden in.<br /></p>
<?php
}
} else {
// er bestaat al een gebruiker met deze naam
?>
<p class="content">Er bestaat al een gebruiker met deze naam.<br />
Druk op de "back" knop van je browser en geef een andere naam op.<br /></p>
<?php
}
} else {
// sommige velden zijn niet ingevuld
?>
<p class="content">Alle velden dienen ingevuld te worden.<br />
Druk op de "back" toets en vul in alle velden wat in.<br /></p>
<?php
}
?>
</td>
</tr>
</table>
<?php include("inc/inc_2.php"); ?>
require("connect.php"); // verbinding met de database maken
?>
<?php include("inc/inc_1.php"); ?>
<table class="border" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td>
<p class="title">Registreren</p>
<?php
// als het formulier nog niet is ingevuld
if(!isset($_POST['submit'])) {
?>
<form action="registreren.php" method="post">
<p class="content">
Naam:<br>
<input type="text" name="naam" size="15" maxlength="20" /><br />
Wachtwoord:<br>
<input type="password" name="wacht1" size="15" maxlength="30" /><br />
Wachtwoord (herhaling):<br>
<input type="password" name="wacht2" size="15" maxlength="30" /><br />
<input type="submit" name="submit" value="Registreer" /></p>
</form>
<?php
// formulier gepost, kijk of alle velden ook daadwerkelijk zijn ingevuld
} elseif(trim($_POST['naam']) <> "" && trim($_POST['wacht1']) <> "") {
// formulier ingevuld - kijk eerst of de gebruiker al bestaat
$naam = $_POST['naam'];
$res = mysql_query("SELECT * FROM users WHERE name='".$naam."'") or die(mysql_error());
if(mysql_num_rows($res) == 0) {
// geen resultaten - dit is wat we willen
// kijk of de opgegeven wachtwoorden overeenkomen
if(!strcmp($_POST['wacht1'], $_POST['wacht2'])) {
// wachtwoorden komen overeen - sla alle gegevens op in de database
// naam is al opgehaald uit het formulier
$wacht = md5($_POST['wacht1']); // versleuteld wachtwoord
$level = 1; // standaard gebruikersniveau
mysql_query("INSERT INTO users (name, pass, level, money, skill, posts) VALUES ('".$naam."','".$wacht."','".$level."', '250','10','0')") or die(mysql_error());
mysql_query("UPDATE users SET ip='".$_SERVER['REMOTE_ADDR']."' WHERE id=".$naam) or die(mysql_error());
// geef melding weer
?>
<p class="content">Je bent geregistreerd!<br />
Je kunt <a href="login.php">hier</a> inloggen.<br /></p>
<?php
} else {
// wachtwoorden komen niet overeen
?>
<p class="content">De twee opgegeven wachtwoorden zijn niet hetzelfde.<br />
Druk op de "back" knop van je browser en voer twee identieke wachtwoorden in.<br /></p>
<?php
}
} else {
// er bestaat al een gebruiker met deze naam
?>
<p class="content">Er bestaat al een gebruiker met deze naam.<br />
Druk op de "back" knop van je browser en geef een andere naam op.<br /></p>
<?php
}
} else {
// sommige velden zijn niet ingevuld
?>
<p class="content">Alle velden dienen ingevuld te worden.<br />
Druk op de "back" toets en vul in alle velden wat in.<br /></p>
<?php
}
?>
</td>
</tr>
</table>
<?php include("inc/inc_2.php"); ?>
Ik wil ook er bij gaan maken, dat je per ip 1 account kunt hebben... En dus dat niemand maar dat 'SQL-Injection'kan doen... Wie helpt mij eventjes! Ik ben al de hele nacht bezig geweest op te proberen mijn database weer in te komen!
PS: Hij is de komende paar weken nog offline, Overal zaten virussen! ik had er maarliefst 67 op mijn pc! (AVG free)
EDIT: ik ben in mijn db, maar hoe zet je autoindex weer op 95?
Gewijzigd op 01/01/1970 01:00:00 door Onbekend Onbekend
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
require("connect.php"); // verbinding met de database maken
?>
<?php include("inc/inc_1.php"); ?>
<table class="border" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td>
<p class="title">Registreren</p>
<?php
// als het formulier nog niet is ingevuld
if(!isset($_POST['submit'])) {
?>
<form action="registreren.php" method="post">
<p class="content">
Naam:<br>
<input type="text" name="naam" size="15" maxlength="20" /><br />
Wachtwoord:<br>
<input type="password" name="wacht1" size="15" maxlength="30" /><br />
Wachtwoord (herhaling):<br>
<input type="password" name="wacht2" size="15" maxlength="30" /><br />
<input type="submit" name="submit" value="Registreer" /></p>
</form>
<?php
// formulier gepost, kijk of alle velden ook daadwerkelijk zijn ingevuld
} elseif(trim($_POST['naam']) <> "" && trim($_POST['wacht1']) <> "") {
// formulier ingevuld - kijk eerst of de gebruiker al bestaat
$naam = mysql_real_escape_string($_POST['naam']);
$IP = (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
$res = mysql_query("SELECT * FROM users WHERE name='".$naam."' AND ip = '".$IP."'") or die(mysql_error());
if(mysql_num_rows($res) == 0) {
// geen resultaten - dit is wat we willen
// kijk of de opgegeven wachtwoorden overeenkomen
if(!strcmp($_POST['wacht1'], $_POST['wacht2'])) {
// wachtwoorden komen overeen - sla alle gegevens op in de database
// naam is al opgehaald uit het formulier
$wacht = md5($_POST['wacht1']); // versleuteld wachtwoord
$level = 1; // standaard gebruikersniveau
mysql_query("INSERT INTO users (name, pass, level, money, skill, posts) VALUES ('".$naam."','".$wacht."','".$level."', '250','10','0')") or die(mysql_error());
mysql_query("UPDATE users SET ip='".$_SERVER['REMOTE_ADDR']."' WHERE id=".$naam) or die(mysql_error());
// geef melding weer
?>
<p class="content">Je bent geregistreerd!<br />
Je kunt <a href="login.php">hier</a> inloggen.<br /></p>
<?php
} else {
// wachtwoorden komen niet overeen
?>
<p class="content">De twee opgegeven wachtwoorden zijn niet hetzelfde.<br />
Druk op de "back" knop van je browser en voer twee identieke wachtwoorden in.<br /></p>
<?php
}
} else {
// er bestaat al een gebruiker met deze naam of ip
?>
<p class="content">Er bestaat al een gebruiker met deze naam.<br />
Druk op de "back" knop van je browser en geef een andere naam op.<br /></p>
<?php
}
} else {
// sommige velden zijn niet ingevuld
?>
<p class="content">Alle velden dienen ingevuld te worden.<br />
Druk op de "back" toets en vul in alle velden wat in.<br /></p>
<?php
}
?>
</td>
</tr>
</table>
<?php include("inc/inc_2.php"); ?>
require("connect.php"); // verbinding met de database maken
?>
<?php include("inc/inc_1.php"); ?>
<table class="border" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td>
<p class="title">Registreren</p>
<?php
// als het formulier nog niet is ingevuld
if(!isset($_POST['submit'])) {
?>
<form action="registreren.php" method="post">
<p class="content">
Naam:<br>
<input type="text" name="naam" size="15" maxlength="20" /><br />
Wachtwoord:<br>
<input type="password" name="wacht1" size="15" maxlength="30" /><br />
Wachtwoord (herhaling):<br>
<input type="password" name="wacht2" size="15" maxlength="30" /><br />
<input type="submit" name="submit" value="Registreer" /></p>
</form>
<?php
// formulier gepost, kijk of alle velden ook daadwerkelijk zijn ingevuld
} elseif(trim($_POST['naam']) <> "" && trim($_POST['wacht1']) <> "") {
// formulier ingevuld - kijk eerst of de gebruiker al bestaat
$naam = mysql_real_escape_string($_POST['naam']);
$IP = (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
$res = mysql_query("SELECT * FROM users WHERE name='".$naam."' AND ip = '".$IP."'") or die(mysql_error());
if(mysql_num_rows($res) == 0) {
// geen resultaten - dit is wat we willen
// kijk of de opgegeven wachtwoorden overeenkomen
if(!strcmp($_POST['wacht1'], $_POST['wacht2'])) {
// wachtwoorden komen overeen - sla alle gegevens op in de database
// naam is al opgehaald uit het formulier
$wacht = md5($_POST['wacht1']); // versleuteld wachtwoord
$level = 1; // standaard gebruikersniveau
mysql_query("INSERT INTO users (name, pass, level, money, skill, posts) VALUES ('".$naam."','".$wacht."','".$level."', '250','10','0')") or die(mysql_error());
mysql_query("UPDATE users SET ip='".$_SERVER['REMOTE_ADDR']."' WHERE id=".$naam) or die(mysql_error());
// geef melding weer
?>
<p class="content">Je bent geregistreerd!<br />
Je kunt <a href="login.php">hier</a> inloggen.<br /></p>
<?php
} else {
// wachtwoorden komen niet overeen
?>
<p class="content">De twee opgegeven wachtwoorden zijn niet hetzelfde.<br />
Druk op de "back" knop van je browser en voer twee identieke wachtwoorden in.<br /></p>
<?php
}
} else {
// er bestaat al een gebruiker met deze naam of ip
?>
<p class="content">Er bestaat al een gebruiker met deze naam.<br />
Druk op de "back" knop van je browser en geef een andere naam op.<br /></p>
<?php
}
} else {
// sommige velden zijn niet ingevuld
?>
<p class="content">Alle velden dienen ingevuld te worden.<br />
Druk op de "back" toets en vul in alle velden wat in.<br /></p>
<?php
}
?>
</td>
</tr>
</table>
<?php include("inc/inc_2.php"); ?>
$res = mysql_query("SELECT * FROM users WHERE name='".$naam."' AND ip = '".$IP."'") or die(mysql_error());
Kweet niet of het veld ip ook werkelijk zo bij jouw heet anders moet je dat natuurlijk aanpassen of toevoegen:)
ALTER TABLE users ADD ip varchar(23) NOT NULL;
GR. mebus!
Gewijzigd op 01/01/1970 01:00:00 door Mebus Hackintosh
Maar: bedenk wel dat mensen in een LAN dus allemaal hetzelfde 'externe' ip hebben! dus dat broertjes en zusjes van mensen die al geregistreerd zijn dan niks meer kunnen! houd hier rekening mee, en ga dan na of je het nog steeds wilt...
GR. mebus!
Eej bedankt! Ga ik eens naar kijken!