Recommandé: parler du répertoire des arbres de DHTML XML ASP CSS Le répertoire des arbres affiche le problème du problème Description: les tables de données auto-associées apparaissent souvent dans nos projets. Si nous les regardons du point de vue global, l'ensemble du tableau est présenté comme une structure de données d'arbre (pour les cas complexes, il peut devenir un graphique). Quand nous faisons ce tableau
Dans la programmation ASP, l'authentification de l'identité peut être considérée comme souvent utilisée. Mais comment pouvons-nous réaliser la sécurité de l'authentification?
Page de soumission de formulaire: sub.htm
| Ce qui suit est le contenu cité: <html> <adal> <Title> Administrateur Connexion < / Title> <body> <form name = form1 méthode = post-action = sub.asp> <p> Administrateur: <input type = Text Name = UserId size = 25 maxLength = 20> mot de passe: <Type d'entrée = Nom du texte = Pass Size = 12 MaxLength = 20> <entrée type = soumettre name = soumettre une valeur = soumettre> </p> </ form> </docy> </html> |
| Ce qui suit est le contenu cité: Sub.asp Program <% Recevoir des données du formulaire user = request.from (utilisateur) Vérifiez si les données soumises dans le formulaire sont vides (la page du formulaire peut être contrôlée par JavaScript ou VBScript, mais n'oubliez pas de les contrôler ici! Si l'utilisateur = alors Accédez à la page de l'invite d'erreur! réponse.redirect err1.htm Cette phrase peut être inutile, mais il vaut mieux l'ajouter! réponse. terminer si pass = request.from (pass) Si pass = alors réponse.redirect err2.htm réponse. terminer si Rejoignez la base de données file = server.mappath (votre base de données) Définir Conn = Server.CreateObject (ADODB.Connection) dr = driver = {Microsoft Access Driver (* .mdb)}; dbq = & file Conn.Open DR set rs = server.createObject (adodb.recordSet) La clé est la langue SQL ici SQL = SELECT * FROM TABLE WHERE USER = & USER & & PASS = & PASS & Rs.Open SQL Si ce n'est pas Rs.Eof alors Si trouvé, accédez à la page de gestion repose.redirect Login.asp autre Si vous n'êtes pas trouvé, entrez la page d'erreur réponse.write err3.htm terminer si %> |
Tout le monde estime que le code ci-dessus devrait être bien, mais voici un grave risque de sécurité:
Si je souhaite me connecter à l'administrateur, je peux le saisir dans la boîte d'entrée de formulaire Sub.htm:
Entrez dans la première zone de texte: A ou 1 = 1 ou ou =
Entrez dans la deuxième zone de texte: a ou 1 = 1 ou ou =
Soumettez-le, vous verrez ... woo, écoute-moi, est-ce bien d'être fait, les briques seront à nouveau jetées ...
A et 1 sont des personnages
Quelqu'un peut vous demander pourquoi vous entrez ces personnages en tant qu'administrateur? ?
En fait, ces personnages sont une tromperie pour la langue SQL de votre programme et entrées avec succès.
Tout le monde voient: Démarrer le programme SQL est un enregistrement qui interroge le tableau et répond à l'utilisateur = & user & et et pass = & Pass & Conditions.
SQL = SELECT * FROM TABLE WHERE USER = & USER & & PASS = & PASS &
J'ai entré le code ci-dessus et c'est devenu:
sql = select * dans la table où l'utilisateur = a ou 1 = 1 et pass = a ou 1 = 1
Jetons un coup d'œil, peut-il y avoir une raison de ne pas entrer? ? Donnez-moi une raison de ne pas entrer, d'abord!
Le champ de passe utilisateur ci-dessus est un type de caractères et s'il s'agit d'un type numérique, il en va de même!
Solution:
1. Fonction Méthode alternative:
Utilisez Remplacer pour remplacer l'entrée de contenu par l'utilisateur par des caractères spéciaux pour atteindre l'objectif de contrôle! SQL = SELECT * FROM TABLE WHERE USER = & remplacer (utilisateur ,,) & et pass = & remplacer (pass ,,) &
Cette méthode ne peut remplacer qu'un seul caractère à la fois. En fait, les personnages dangereux ne sont pas seulement, mais aussi des personnages tels que>, <, &,% devraient être entièrement contrôlés. Mais que dois-je faire si je ne semble pas être compétent avec la fonction de remplacement? ?
2. Méthode de contrôle du programme
Utilisez le programme pour contrôler tout le contenu entré par le client, afin que vous puissiez contrôler pleinement les caractères ou codes dangereux possibles entrés par le client. Je vais faire cette méthode!
| Ce qui suit est le contenu cité: <% Capturez le contenu du formulaire soumis par l'utilisateur user = request.from (utilisateur) pass = request.from (pass) ... Le contrôle du cycle commence pour i = 1 à Len (utilisateur) Utilisez la fonction médiane pour lire un caractère en position I dans l'utilisateur variable us = mid (utilisateur, i, 1) Comparaison des personnages de lecture Si us = ou us =% ou us = <ou us => ou us = puis Si les caractères ci-dessus sont contenus, un message d'erreur se produira. Les caractères spéciaux ci-dessus ne peuvent pas être contenus. réponse.redirect err2.htm réponse. terminer si suivant ... %> |
Partager: Parse ASP et procédures stockées Il existe de nombreux articles sur l'ASP et les procédures stockées, mais je doute que les auteurs l'aient réellement pratiqué. J'ai lu beaucoup d'informations pertinentes lorsque j'étais au début et j'ai constaté que bon nombre des méthodes fournies n'étaient pas le cas dans la pratique. Pour des applications simples, ceci