SQL Injection Werkt niet!?!

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Shu Chen

Shu Chen

02/12/2010 13:25:33
Quote Anchor link
Hallo PHP hulpers

Ik heb een website waar dit voorkomt http://www.blablabla.nl/newspage.php?id=1 alleen is het is niet anti sql injection. Dus ik heb geprobeerd op te beveiligen. nu heb ik dit toegevoegd.

$id = htmlspecialchars(mysql_real_escape_string($_GET['id']));

maar helaas werkt dit niet! Ik gebruik het programma Havij om te testen en kan gewoon in de database komen! Tenzij als ik is_numeric function toevoegd kan hij er niet erin. Maar is dit dan wel veilig genoeg? en mysql_real_escape is toch meer dan genoeg om SQL Injection te voorkomen?

Graag jullie mening.

Met Vriendelijke Groet,

Shu
 
PHP hulp

PHP hulp

30/11/2024 11:15:06
 
Erik Rijk

Erik Rijk

02/12/2010 13:35:36
Quote Anchor link
Input kan je goed beveiligen dmv mysql_real_escape_string();
Voor velden die enkel met numerieke waardes kunnen werken, zal je is_numeric moeten gebruiken.

Je kan dmv strip_tags nog html code uit de input halen voordat je het in de database gooit.

htmlentities / stripslashes gebruiken bij het ophalen van je data uit de db om het goed weer te geven op je scherm
 
Ama saril

ama saril

02/12/2010 13:37:38
Quote Anchor link
Als ik het goed heb moet je de string in je SQL string escapen in plaats van ervoor. (maar weet dit niet zeker). Heb alles op de volgende manier gedaan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$qString
= "Select * FROM eenTabel WHERE id = '".mysql_real_escape_string($id)."'";
?>


en dan kan ie er niet inkomen.
 
Shu Chen

Shu Chen

02/12/2010 13:55:26
Quote Anchor link
Nou ik zet niks in de database maar ik vraag welke id het is uit URL en vervolgens wordt uit de database de goede tekst weergegeven.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
    include ("inc/connection.php");
    
    $id = htmlspecialchars(mysql_real_escape_string($_GET['id']));
    $result = mysql_query("SELECT * FROM news Where id = $id")
    or die(mysql_error());
    while($row = mysql_fetch_array( $result )) {

    echo $row['title'];
    }

?>
Gewijzigd op 02/12/2010 14:14:47 door Shu Chen
 
- SanThe -

- SanThe -

02/12/2010 14:18:05
Quote Anchor link
Alleen mysql_real_escape_string($_GET['id']) is voldoende.
 
Shu Chen

Shu Chen

02/12/2010 14:20:48
Quote Anchor link
- SanThe - op 02/12/2010 14:18:05:
Alleen mysql_real_escape_string($_GET['id']) is voldoende.


Dacht ik ook maar ik kan nog steeds met een SQL injection programma erin!
 
- SanThe -

- SanThe -

02/12/2010 14:24:33
Quote Anchor link
Shu Chen op 02/12/2010 14:20:48:
Dacht ik ook maar ik kan nog steeds met een SQL injection programma erin!


En wat is dat? Graag info.
 
Shu Chen

Shu Chen

02/12/2010 14:28:53
Quote Anchor link
Met het boven genoemde programma (Havij) laat dit zien.

Analyzing http://blablablbalbal.nl/newspage.php?id=1
Host IP: xxx.xxx.72.103
Web Server: Apache/2
Keyword Found: vijf
Injection type is Integer
DB Server: MySQL
Selected Column Count is 7
Finding string column
Valid String Column is 2
Target Vulnerable :D
Current DB: (***geheim**)
 
- SanThe -

- SanThe -

02/12/2010 14:39:30
Quote Anchor link
En wat is het lek dan?
Ik ken dit verder niet.
 
Niels K

Niels K

02/12/2010 15:51:29
Quote Anchor link
@Santhe

Ik heb net het programmatje geprobeerd en moet zeggen dat het toch zeker netjes is. Maar ik probeer net hetzelfde als wat jij doet en bij mij kan hij er niet in komen? Heb je niet ergens anders een lek?
 
Shu Chen

Shu Chen

03/12/2010 11:27:19
Quote Anchor link
Niels Kieviet op 02/12/2010 15:51:29:
@Santhe

Ik heb net het programmatje geprobeerd en moet zeggen dat het toch zeker netjes is. Maar ik probeer net hetzelfde als wat jij doet en bij mij kan hij er niet in komen? Heb je niet ergens anders een lek?


Mag ik jouw code eens bekijken die je hebt gebruikt?
 
Chris -

Chris -

03/12/2010 11:29:08
Quote Anchor link
Een geautomatiseerd script levert nooit dezelfde resultaten als een handmatige injectie. Kun je mij de URL per PM sturen?
 
Shu Chen

Shu Chen

03/12/2010 11:41:22
Quote Anchor link
PM Verstuurd.

Snap gewoon heel mysql real escape string gewoon niet!

index.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
include (connection.php);
$query1 = "SELECT * FROM test";
    $result = mysql_query($query1);
    while($row = mysql_fetch_array( $result )) {
    echo $row['content'] . " <a href='test.php?id=" . $row['id'] . "'>Lees artikel</a><br>";
    
    }


?>


test.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
include (connection.php);
$id = mysql_real_escape_string($_GET['id']);
    $result = mysql_query("SELECT * FROM test Where id = $id")
    or die(mysql_error());
    while($row = mysql_fetch_array( $result )) {
    echo $row['id'] . $row['content'];
    }

    
?>
 



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.