Mon site Web personnel a été attaqué il y a un mois, puis j'ai reçu un rapport de détection de vulnérabilité de 360 aujourd'hui. Oh mon Dieu, 360 fait toujours ce genre de chose ?
injection SQL
Lien de vulnérabilité 1 :
http://xxx.com:80/index.php?alias=message&action=comment?comment-diary-id=1&comment-ip=182.118.33.8&comment-author=88888&comment-email =hacker@hacker.org&comment-url=http://www.hacker.org/&comment-text=88888&comment-submit=SEND&comment-parent=0 RLIKE (SELECT (CASE WHEN (4725=4725) THEN 0 ELSE 0x28 END))
Lien de vulnérabilité 2 :
http://xxx.com:80/index.php?alias=message' AND SLEEP(5)%20%23
Lien de vulnérabilité 3 :
http://xxx.com:80/index .php?cat=note' ET 'dSob'='dSob
xss
Lien de vulnérabilité :
http://xxx.com:80/admin/login.php?req_url=/admin/index.php"><script>alert(42873)</script>
Pourquoi est-il toujours injecté lorsque j'utilise des ajouts obliques lors de l'écriture dans la base de données ? Le lien 1 et le lien 2 doivent-ils être combinés pour être injectés ?
Quant à la deuxième vulnérabilité, je ne sais pas comment m’en défendre.
Je n'ai pas de recherche approfondie sur la sécurité du site. Je voudrais vous demander d'analyser comment cela est réalisé et comment corriger les failles. Merci.
Si vous avez besoin d'écrire le code dans la base de données, je le publierai.
PS, l'écriture des liens sera automatiquement raccourcie par SF, donc un espace est ajouté après http:
.
Après le débogage, il peut en effet être injecté... Je ne connais toujours pas assez SQL
La déclaration finale écrite dans la base de données est :
insert into comment values(NULL,1,1497261734,'88888',0,'hacker@hacker.org','http://www.hacker.org/','182.118.33.8','88888',0 RLIKE (SELECT (CASE WHEN (4725=4725) THEN 0 ELSE 0x28 END)) AND SLEEP(5)%20%23);
Je voudrais demander ce que signifie la dernière phrase
0 RLIKE (SELECT (CASE WHEN (4725=4725) THEN 0 ELSE 0x28 END)) AND SLEEP(5)%20%23
Code de script HTML imbriqué xss, les paramètres doivent être convertis en entités HTML. Fonction htmlspecialchars
La connexion 1 consiste à exécuter mysql en saisissant les mots-clés de mysql. Maintenant, il devrait être nécessaire de filtrer les mots-clés.
Bien sûr, la meilleure façon d’éviter l’injection est d’utiliser le prétraitement ! ! ! !
Il est préférable d'utiliser des requêtes paramétrées au lieu d'épisser des instructions SQL.
xss peut filtrer les codes de script comme
<script>
grâce au filtrage des paramètres.Votre code n'est pas du tout filtré