MYSQL/PHP probleem

Gestart doorDyllaann17 reacties96 weergaven

18 berichten · pagina 1 van 2

Dyllaann

Lid · Topicstarter

Berichten
573
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hellow one2xs,

Vandaag een nieuw probleem, sinds vanmiddag heb ik het script bijna af gekregen.
Nu moet er nog één dingetje worden gedaan, en dat is het probleem.
Wat moet het script doen:

Pagina 1: Voer de naam in die je moet bannen (Werkt)
Pagina2: Gebruik $naam om in de database het bijbehorende ip te verkrijgen, en voer $ip vervolgens in bij een andere table.

Het script wat ik erbij heb gemaakt is hetvolgende:
Spoiler tonen
[COLOR= #0000BB]<?
$naam[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]"naam"[/COLOR][COLOR= #007700]];[/COLOR]
[COLOR= #0000BB]$result[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]SELECT ip FROM users WHERE username = "$naam"[/COLOR][COLOR= #007700])[/COLOR] or [URL="http://www.php.net/die"]die[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/mysql_error"]mysql_error[/URL][COLOR= #007700]());[/COLOR]
[URL="http://www.php.net/echo"]echo[/URL] [COLOR= #0000BB]$result[/COLOR][COLOR= #007700];[/COLOR]
[URL="http://www.php.net/echo"]echo[/URL] [COLOR= #0000BB]$naam[/COLOR][COLOR= #007700];[/COLOR]
[URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]SELECT `ip` FROM `users` WHERE `username` = [/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$naam[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000][/COLOR][COLOR= #007700];[/COLOR]

[COLOR= #FF8000]#Ban persoon[/COLOR]
[URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"INSERT INTO bans (ip, naam) VALUES ("[/COLOR][COLOR= #007700].[/COLOR][URL="http://www.php.net/mysql_real_escape_string"]mysql_real_escape_string[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$result[/COLOR][COLOR= #007700]).[/COLOR][COLOR= #DD0000]", "[/COLOR][COLOR= #007700].[/COLOR][URL="http://www.php.net/mysql_real_escape_string"]mysql_real_escape_string[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$naam[/COLOR][COLOR= #007700]).[/COLOR][COLOR= #DD0000]")"[/COLOR][COLOR= #007700]);[/COLOR]
[URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]Gebruiker "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$naam[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]" met het IP "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$result[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]" is succesvol gebanned![/COLOR][COLOR= #007700];[/COLOR]
Maar ik krijg uit
echo $result;

Resource id #22
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Je kan een query niet zomaar echoen, het geeft altijd een resource aan, of een false, als deze mislukt. Niet de data die je direct wilt. Deze zul je eerst nog tot een array moeten gaan fetchen.
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Query echoen ?

// aarclay was me voor
0
Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
mysql_result
0
Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
En er is mogelijkheid tot SQL injection
0
Dyllaann

Lid · Topicstarter

Berichten
573
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
SQL injection is beveiligd als het goed is,
en dan is het ook nog eens een goed beveiligde adminpagina waar je een mooie rode error krijgt als je probeert erop te komen.
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Lijn 3... SQL injection.
0
Berichten
4.213
Reputatie
0
Punten
0,02
Lid sinds
Laatst gezien
Ja oké, maar geloof me, er gaat daar echt niemand kunnen komen.
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Robinkoch schreef:
Ja oké, maar geloof me, er gaat daar echt niemand kunnen komen.
En dan ga je de volgende dag vrolijk verder met een openbaar script, en dan copy-paste je voor het gemak even je onveilige query... shutup
Consequent toevoegen! Niet laks zijn, gewoon doen.....
Als jij een poort voor je huis hebt met een slot, acht je dat ook als voldoende veilig? Zet je dan dus maar geen slot op je voordeur?
0
Berichten
907
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Waarom doe je lijn 3 niet, maar lijn 9 wel?
0
Dyllaann

Lid · Topicstarter

Berichten
573
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Okey, het is me dus nu gelukt om het goede ip uit de database te halen d.m.v een fetch.
Nu heb ik een nieuw probleem, ik heb samen met een iets beter ervaren php-er naast me naar ons script gekeken, en we komen er niet uit.
Spoiler tonen
[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/include"]include[/URL] [COLOR= #DD0000]core/init.php[/COLOR][COLOR= #007700];[/COLOR]
protect_page[COLOR= #007700]();[/COLOR]
admin_page[COLOR= #007700]();[/COLOR]
[URL="http://www.php.net/include"]include[/URL] [COLOR= #DD0000]includes/overall/header.php[/COLOR][COLOR= #007700];[/COLOR] 
[COLOR= #FF8000]#==============================================[/COLOR]
[COLOR= #0000BB]$naam[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]"naam"[/COLOR][COLOR= #007700]];[/COLOR]
[COLOR= #0000BB]$query[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT * FROM users WHERE username = "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$naam[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]""[/COLOR][COLOR= #007700]);[/COLOR]  
    [URL="http://www.php.net/while"]while[/URL] [COLOR= #007700]([/COLOR][COLOR= #0000BB]$ip[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_fetch_array"]mysql_fetch_array[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$query[/COLOR][COLOR= #007700])){[/COLOR]

[COLOR= #FF8000]#Ban persoon[/COLOR]
[URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]INSERT INTO bans (ip, naam) VALUES ("[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$ip[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]ip[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]", "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$naam[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]")[/COLOR][COLOR= #007700])){[/COLOR]
[URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]Gebruiker "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$naam[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]" met het IP "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$ip[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]ip[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]" is succesvol gebanned![/COLOR][COLOR= #007700];
}[/COLOR]
[URL="http://www.php.net/else"]else[/URL][COLOR= #007700]{}
}[/COLOR]
?>
Hij zegt bij de echo wel het goede ip,
bijv. 12.345.678.90
Maar zodra ik in de database kijk, staat er
ID 1 - Dyllaann - 12345

Dus niet het goede IP.

//By the way: SQL injection beveiligen: ik snap jullie heissa erover, maar je kan dan toch netzogoed op de pagian ervoor een naam intikken, hoef je niet moeilijk te injecten?
0
Dyllaann

Lid · Topicstarter

Berichten
573
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
// BUMP,

Ik heb het hard nodig..
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Voer je query eens uit in phpMyAdmin? Krijg je de resultaten die je verwacht?
SQL-injection, ik raad aan om dat altijd consequent toe te passen, het is maar 5 seconden werk om toe te voegen. Denk nou nooit dat je dingen in je adminpaneel niet hoeft te beveiligen, want zoals ik zei.... ooit kan je de fout in gaan.

Wil je dat? NEE!
0
Dyllaann

Lid · Topicstarter

Berichten
573
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
#1064 - 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 .678.90) at line 1

Met query: INSERT INTO `bans`(`naam`, `ip`) VALUES (Dyllaann, 12.345.678.90)

toevoeging op 17 juni 2013, 16:36:17:
Omfg, ik faalde weer -__- ik had niet door dat hij nog op INT(15) stond ipv. VARCHAR(15)
Bedankt voor het meedenken Aarclay! wink
0
Berichten
308
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Dyllaann schreef:
#1064 - 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 .678.90) at line 1

Met query: INSERT INTO `bans`(`naam`, `ip`) VALUES (Dyllaann, 12.345.678.90)
toevoeging op 17 juni 2013, 16:36:17:
Omfg, ik faalde weer -__- ik had niet door dat hij nog op INT(15) stond ipv. VARCHAR(15)
Bedankt voor het meedenken Aarclay! wink

Het is nog steeds niet tegen SQL Injection beveiligd.
Om het voorjezelf gemakkelijk te maken kan je een function/method maken die een array met alle waarden tegen xss/sql-injection beveiligd.

Ik maak hem even voor je:
(is in one2xs editor gemaakt dus geen uitlijning nee)

[COLOR= #0000BB]<?php[/COLOR]
[COLOR= #007700]function[/COLOR] sqlInjection[COLOR= #007700]([/COLOR][COLOR= #0000BB]$data[/COLOR][COLOR= #007700]) {[/COLOR]
[URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][URL="http://www.php.net/is_array"]is_array[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$data[/COLOR][COLOR= #007700])) {[/COLOR]
[URL="http://www.php.net/foreach"]foreach[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$data[/COLOR] [COLOR= #007700]as[/COLOR] [COLOR= #0000BB]$i[/COLOR] [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]$item[/COLOR][COLOR= #007700]) {[/COLOR]
[URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][URL="http://www.php.net/is_array"]is_array[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$item[/COLOR][COLOR= #007700])) {[/COLOR]
[COLOR= #0000BB]$data[/COLOR][COLOR= #007700][[/COLOR][COLOR= #0000BB]$i[/COLOR][COLOR= #007700]] =[/COLOR] sqlInjection[COLOR= #007700]([/COLOR][COLOR= #0000BB]$item[/COLOR][COLOR= #007700])
}[/COLOR]
[URL="http://www.php.net/else"]else[/URL] [COLOR= #007700]{[/COLOR]
[COLOR= #0000BB]$data[/COLOR][COLOR= #007700][[/COLOR][COLOR= #0000BB]$i[/COLOR][COLOR= #007700]] =[/COLOR] [URL="http://www.php.net/addslashes"]addslashes[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$data[/COLOR][COLOR= #007700]);
}
}[/COLOR]

[URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$data[/COLOR][COLOR= #007700];
}[/COLOR]
[URL="http://www.php.net/else"]else[/URL] [COLOR= #007700]{[/COLOR]
[URL="http://www.php.net/return"]return[/URL] [URL="http://www.php.net/addslashes"]addslashes[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$data[/COLOR][COLOR= #007700]);
}
}[/COLOR]
?>


Deze functie zo moeten werken (is niet getest), maar normaal gezien werkt ie wel voor arrays en gewone strings.

multi-dimensionele arrays zijn ondersteund doordat het checkt of je index waarde een array is. Dan callt de functie zichzelf, zo maak je een loop voor alle index-waarden indien het multi-dimensioneel is.

Maak van de beveiliging aub een prioriteit, want er zijn veel te veel door one2xs leden gemaakte systemen die lek zijn.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren