chr(9), chr(10), chr(13), chr(32), chr(34)
Tous les tableaux sur les codes ASCII : [url][/url]
chr(13) est un retour chariot
Chr(10) est un caractère de nouvelle ligne
chr(32) est un caractère espace
9/34 est un onglet, non déterminé ?
Voici quelques exemples
caractère d'espace spécial
En programmation asp, nous utilisons souvent la fonction trim(rtrim,ltrim) pour supprimer les espaces au début et à la fin de certaines données. L'auteur a récemment écrit un salon de discussion asp avec le code suivant :
<% dim nom, titre
nom=trim(request.form("nom"))
mot de passe=trim(request.form("mot de passe"))
si name=""ou password="" alors réponse.redirect "error.asp?error=name&name=null"
monDSN="DSN=test;uid=test;pwd=test"
set cn=server.createobject("adodb.connection")
cn.ouvrir monDSN
sql="insérer dans les valeurs de test(nom, titre)('"&nom&"','"&mot de passe&"')"
cn.execute(sql)
cn.close%>
L'auteur a utilisé la fonction trim pour supprimer les espaces au début et à la fin. Dans des circonstances normales, ce programme s'exécutait normalement, mais plus tard, l'auteur a découvert que quelqu'un pouvait utiliser des espaces pour saisir, ce qui signifie que le nom de l'utilisateur était entièrement des espaces, mais. l'auteur a essayé d'utiliser les espaces par lui-même mais n'a pas pu le passer (c'est-à-dire que cela a été détecté par le programme). Les espaces au début et à la fin ont été supprimés par la fonction trim. Même s'il y a des espaces au milieu, j'ai supprimé les espaces au début et à la fin. peut l'utiliser si nécessaire. Utilisez une fonction pour supprimer les espaces au milieu. Étant donné que l'auteur utilise les informations utilisateur enregistrées dans la base de données SQL, l'auteur soupçonne qu'il a utilisé autre chose pour empêcher le système de les voir, il va donc vérifier la base de données SQL. qui enregistre les informations de l'utilisateur (l'auteur a utilisé cette méthode pour voir les utilisateurs avec des sauts de ligne), mais je vois toujours que les informations de l'utilisateur dans la base de données comportent également des espaces. Cela signifie-t-il que cet utilisateur a utilisé une méthode pour contourner mon nom d'utilisateur. et la surveillance des mots de passe ? ? ? Je n'ai vraiment trouvé aucune faille dans le programme, donc je n'ai pu que demander conseil à cet utilisateur. Heureusement, cet utilisateur m'a facilement dit qu'il s'agissait de "Alt+255", maintenez la touche alt enfoncée puis appuyez sur ". Centre" sur le petit clavier. 2", "5", "5" produiront un caractère spécial "espace" (l'auteur n'est pas très clair sur ce concept. Il s'agit d'un caractère de contrôle utilisé dans certains compilateurs. Vous pouvez voir word2000 dans l'éditeur, et il devrait y avoir d'autres caractères de contrôle). Ce caractère d'espace est différent du caractère traditionnel généré en appuyant sur la barre d'espace. Son code asc est 255, et le code asc de l'espace traditionnel tapé est. 32. La fonction trim ne peut reconnaître et supprimer que le code avec le code asc 32, il y a donc des utilisateurs avec des espaces ! En réponse à cette situation, l'auteur a conçu les deux fonctions suivantes pour supprimer le caractère « espace » :
fonction xuankong(str)
résultat sombre
faible j
j=len(chaîne)
résultat=""
je suis faible
pour i = 1 à j
sélectionner le cas milieu (str,i,1)
cas "<"
résultat=résultat+"<"
cas ">"
résultat=résultat+">"
cas chr(34)
résultat=résultat+"""
cas "&"
result=result+"&" 'Le code ci-dessus convertit certaines balises html
case chr(255) 'Empêcher les espaces spéciaux
résultat=résultat
case chr(13) 'Empêcher les retours chariot
résultat=résultat+""
case chr(10) 'Empêcher les caractères de nouvelle ligne
résultat=résultat+""
cas d'autre
résultat=résultat+milieu(str,i,1)
fin de la sélection
suivant
xuankong=résultat
fonction de fin
Utilisez ensuite cette fonction dans votre programme asp, tel que :
nom=xuankong(trim(request.form("nom")))
Étant donné que la valeur du code asc du caractère 0-z est comprise entre 48 et 122, vous pouvez utiliser la méthode suivante pour surveiller :
faible j
j=len(trim(request.form("nom")))
pour i= 1 à j
si asc(mid(name,i,1))>122 ou asc(mid(name,i,1))<48 alors réponse..redirect"error.asp?
erreur = spécial"
suivant
Bien que ce type d '«espace» ne pose pas encore de problèmes susceptibles d'endommager le programme, il peut causer des problèmes et il est préférable de l'éviter. Cependant, ce type d'espace présente également un avantage s'il est utilisé comme tel. votre mot de passe Internet, hehe... J'ai bien peur que peu de gens puissent le voir ! Tout ce que j'ai vu était considéré comme de l'espace, mais ce n'était pas le cas... L'auteur n'est pas familier avec php et jsp, donc je ne sais pas si ce genre de problème existe dans ces deux choses.
neweguo 12/01/2006 01:55
Comment lire les espaces
Comment lire les espaces
Nous devons souvent afficher dynamiquement le contenu extrait de fichiers sur des pages Web. Si vous écrivez un programme tel qu'un salon de discussion ou un forum, le contenu de chaque locuteur doit d'abord être stocké dans un fichier texte puis affiché sur la page Web. Mais le contrôle que nous utilisons sur la page Web pour permettre aux utilisateurs de saisir du contenu est la zone de texte. Ensuite, lorsque le contenu de la zone de texte est affiché sur la page Web, les caractères tels que les espaces et les sauts de ligne ne peuvent pas être affichés, ce qui signifie qu'il n'y a pas de paragraphes. Afin d'afficher des paragraphes sur une page Web, des balises HTML doivent être insérées dans les espaces et les sauts de ligne où nous saisissons le texte pour afficher ces caractères. Veuillez consulter l'exemple ci-dessous.
S'il y a un écran de salle de discussion sur la page Web, après avoir entré le contenu dans la zone de texte, cliquez sur "Soumettre" pour afficher notre contenu sur la page. La zone de texte est nommée Text1. Nous pouvons utiliser la méthode suivante pour le faire. très intelligemment. Réalisez la fonction d'affichage des sauts de ligne et des espaces de texte.
<%
...
...
str=request.querystring("text1")
str=Remplacer(str, Chr(32), " ")
'Remplacer les espaces par des panneaux
str=Remplacer(str, vbCrLf, "<br>")
'Remplacez les caractères de retour chariot et de saut de ligne par l'indicateur <br>
Réponse.write str
...
...
%>
Après avoir transmis le code ci-dessus, nous modifions les caractères de retour chariot et de saut de ligne dans le texte par la marque de saut de ligne <br> reconnue par le navigateur, et remplaçons les espaces par la marque d'espace. Parmi eux, Chr(32) représente un espace et vbCrLf représente un retour chariot et un saut de ligne.
neweguo 12/01/2006 01:55
chr(13) est un retour chariot
(
Exemple : Remplacez tous les retours chariot par <br/>
#Remplacer(foo, Chr(13), "<br />", "TOUS")#
)
Chr(10) est un caractère de nouvelle ligne
Tous les tableaux sur les codes ASCII : [url][/url]
<cfscript>
/**
* Une version améliorée de la fonction de formatage des paragraphes d'articles
* Utilisez ) pour remplacer TAB et prendre en charge plusieurs systèmes
* Prise en charge de la réécriture et de multiOS par Nathan Dintenfas.
*
* @param string La chaîne à formater (obligatoire)
* @return Renvoie une chaîne.
* @auteur Ben Forta ([email][email protected][/email])
* @version 3, 26 juin 2002
*/
fonction Paragrap1hFormat2(str) {
// transforme d'abord le style Windows en style Unix
str = remplacer(str,chr(13)&chr(10),chr(10),"TOUS");
// transforme désormais le style Macintosh en style Unix
str = remplacer(str,chr(13),chr(10),"TOUS");
// corrige maintenant les onglets
str = remplacer(str,chr(9)," ","TOUS");
// renvoie maintenant le texte formaté en HTML
return replace(str,chr(10),"<br />","ALL");
}
</cfscript>