2017-01-13 1 views
-3

Je crée un site Web de base avec un écran de connexion pour un projet et je veux le tester pour certaines vulnérabilités de base d'injection sql. J'utilise un formulaire pour lire un nom d'utilisateur et un mot de passe d'un utilisateur et cette ligne de code PHP pour trouver leurs informations dans ma base de données et l'imprimer pour les:Comment tester mon site Web pour les vulnérabilités de base d'injection sql?

if(isset($_POST['username'])&&$_POST['username']!=""&&isset($_POST['pass'] )&&$_POST['pass']!=""){ $sql="SELECT username,pass,email,name,surname,ADT,tel,address,bdate,gender FROM myusers WHERE username='".$_POST['username']."' AND pass='".$_POST['pass']."'";}

Merci d'avance pour votre aide . Si vous avez besoin d'informations supplémentaires sur mon code, veuillez demander.

+0

Je peux vous dire que votre code est vulnérable tout de suite, sans aucun test. –

+0

simple, il suffit de poser une question: "Y a-t-il * une * déclaration quelconque * qui n'est * pas * complètement paramétrée?" - Si la réponse est oui, alors oui, votre code est ** très vulnérable **. ce qui est évident dans votre exemple. Imaginez quelqu'un qui affiche un nom d'utilisateur ''; DROP TABLE myusers; - '.. au fait: ** jamais jamais! stocker des mots de passe en texte clair! ** utiliser 'password_hash()' et 'password_verify()'! * (chaque fois que vous stockez un mot de passe simple, root déplace un chaton vers/dev/null) * –

Répondre

0

Je vais suggérer d'utiliser un violoneux (je recommande telerik fiddler) et de créer manuellement une demande. Via ce programme, vous pouvez préparer votre requête d'injection sql et voir la réponse du serveur. Ici vous avez quelques exemples de base:

0+1, 2-1, (...) - if it return specific record, your code is vulnerable 
In your case check this: 
x' or 'x'='x'   
x' or 'x'='x' -- 
1 AND 1=(SELECT 1), 1 AND 1=(SELECT 0) - check if subquery works 

Vous pouvez également consulter cheat sheet et sql injection cheat sheet.