Les éditeurs Ewebeditor et fckeditork filtrent les guillemets simples
Nous avons utilisé la méthode d'écriture SQL=insert into product(title,content) values(' &request(title)& ' ,' &request(content)& ' ), nous avons donc trouvé le contenu que le client avait COPIÉ dans l'éditeur à ce moment-là. , et a constaté que, bien sûr, ce contenu contient des guillemets simples. Il s'avère que c'est précisément parce que le contenu soumis par le client à l'éditeur contenait des guillemets simples que notre instruction SQL a changé, ce qui équivaut à SQL=insert into product( titre, contenu) valeurs (« contenu »). ,'content') devient SQL=insert into product(title,content) values('content','content''). Si nous regardons attentivement, nous saurons que simplement parce qu'il y a un guillemet simple supplémentaire dans le contenu, L'instruction SQL se produit. Il y a une grave erreur d'écriture. Cependant, nous sommes également surpris que, puisqu'elle est mal écrite, pourquoi l'instruction SQL ne donne-t-elle pas de message d'erreur, mais nous indique également que l'opération a réussi ? pensez aux petits hackers communs des années 2003. J'aime utiliser « ou » = « ou » La méthode d'intrusion en arrière-plan semble profiter du bug selon lequel les guillemets simples ne sont pas filtrés lorsque SQL est exécuté. Par conséquent, quelle que soit la manière dont SQL est exécuté, le résultat renvoie vrai. Haha, je ne m'y attendais pas. écrire le programme doit être aussi simple et clair que possible, ce qui est aussi une erreur. Bon, le problème a été trouvé. À l'avenir, avant que tout le SQL ne soit entré dans la base de données, nous filtrerons les champs avant de transmettre la valeur, afin que ce problème ne se produise plus. Vous trouverez ci-dessous une fonction de filtrage de sécurité SQL très complète. Vous pouvez simplement l'utiliser. Il est prêt à être appelé.
Fonction HTMLEncode(Str)
Si Isnull(Str) Alors
HTMLEncode =
Fonction de sortie
Fin si
Str = Remplacer (Str, Chr (0),, 1, -1, 1)
Str = Remplacer (Str, , ", 1, -1, 1)
Str = Remplacer(Str,<,<, 1, -1, 1)
Str = Remplacer (Str,>,>, 1, -1, 1)
Str = Remplacer (Str, script, script, 1, -1, 0)
Str = Remplacer (Str, SCRIPT, SCRIPT, 1, -1, 0)
Str = Remplacer (Str, Script, Script, 1, -1, 0)
Str = Remplacer(Str, script, Script, 1, -1, 1)
Str = Remplacer (Str, objet, objet, 1, -1, 0)
Str = Remplacer (Str, OBJECT, OBJECT, 1, -1, 0)
Str = Remplacer (Str, Objet, Oobjet, 1, -1, 0)
Str = Remplacer (Str, objet, objet, 1, -1, 1)
Str = Remplacer (Str, applet, applet, 1, -1, 0)
Str = Remplacer (Str, APPLET, APPLET, 1, -1, 0)
Str = Remplacer (Str, Applet, Applet, 1, -1, 0)
Str = Remplacer (Str, applet, Applet, 1, -1, 1)
Str = Remplacer (Str, [, [)
Str = Remplacer(Str, ], ])
Str = Remplacer (Str, , , 1, -1, 1)
Str = Remplacer (Str, =, =, 1, -1, 1)
Str = Remplacer (Str, ', '', 1, -1, 1)
Str = Remplacer (Str, select, sel'ct, 1, -1, 1)
Str = Remplacer (Str, exécuter, execute, 1, -1, 1)
Str = Remplacer (Str, exec, exec, 1, -1, 1)
Str = Remplacer (Str, join, join, 1, -1, 1)
Str = Remplacer (Str, union, union, 1, -1, 1)
Str = Remplacer (Str, où, où, 1, -1, 1)
Str = Remplacer (Str, insert, insert, 1, -1, 1)
Str = Remplacer (Str, delete, del'te, 1, -1, 1)
Str = Remplacer (Str, mise à jour, mise à jour, 1, -1, 1)
Str = Remplacer (Str, like, like, 1, -1, 1)
Str = Remplacer (Str, drop, drop, 1, -1, 1)
Str = Remplacer (Str, créer, créer, 1, -1, 1)
Str = Remplacer (Str, renommer, ren'me, 1, -1, 1)
Str = Remplacer (Str, count, count, 1, -1, 1)
Str = Remplacer (Str, chr, chr, 1, -1, 1)
Str = Remplacer (Str, mid, mid, 1, -1, 1)
Str = Remplacer (Str, tronquer, tronquer, 1, -1, 1)
Str = Remplacer (Str, nchar, nch'r, 1, -1, 1)
Str = Remplacer (Str, char, ch'r, 1, -1, 1)
Str = Remplacer (Str, alter, alter, 1, -1, 1)
Str = Remplacer (Str, cast, ca't, 1, -1, 1)
Str = Remplacer (Str, existe, existe, 1, -1, 1)
Str = Remplacer (Str, Chr (13), , 1, -1, 1)
HTMLEncode = Remplacer(Str,','', 1, -1, 1)
Fonction de fin