J'obtiens ce drapeau chrome lorsque j'essaie de poster et ensuite d'obtenir un formulaire simple.
Le problème est que la console développeur ne montre rien à ce sujet et que je ne trouve pas la source du problème par moi-même.
Existe-t-il une option pour examiner cela plus en détail? Visualisez le code qui a provoqué l'erreur de résolution ...
Chrome v58 pourrait ou ne pourrait pas corrigez votre problème ... Cela dépend vraiment de ce que vous êtes en train de poster. Par exemple, si vous essayez de POST quelques données HTML/XML brutes dans un élément input/select/textarea, il est possible que votre demande soit toujours bloquée par l'auditeur.
Ces derniers jours, j'ai abordé ce problème dans deux scénarios différents: un éditeur WYSIWYG côté client et un formulaire de téléchargement interactif avec une sorte d'aperçu du contenu. J'ai réussi à les corriger tous les deux en codant en base64 le code HTML brut avant LE POST, puis le décodage sur la page de réception PHP. Cela résoudra probablement le problème et, plus important encore, sensibilisera le développeur aux données provenant de POST demandes, le poussant, espérons-le, à adopter des stratégies efficaces de codage/décodage des données et à renforcer son application Web à partir de XSS - attaques de type.
Pour encoder votre contenu en base64 sur le côté client, vous pouvez utiliser la fonction native btoa () , actuellement prise en charge par la plupart des navigateurs, ou une alternative tierce telle que comme un plugin jQuery (j'ai fini par utiliser this , ce qui a bien fonctionné).
Pour décoder en base64 les données POST, vous pouvez ensuite utiliser la fonction base64_decode(str)
de PHP, la Convert.FromBase64String(str)
de ASP.NET ou autre (selon votre scénario côté serveur).
Pour plus d'informations, consultez cet article de blog que j'ai écrit sur le sujet.
Le moyen simple de contourner cette erreur de développement est d’envoyer un en-tête au navigateur.
Mettez l'en-tête avant d'envoyer les données au navigateur.
En php
, vous pouvez envoyer cet en-tête pour contourner cette erreur, envoyer la référence de l'en-tête :
_header('X-XSS-Protection:0');
_
Dans ASP.net
, vous pouvez envoyer cet en-tête et envoyer la référence de l'en-tête :
_HttpContext.Response.AddHeader("X-XSS-Protection","0");
or
HttpContext.Current.Response.AddHeader("X-XSS-Protection","0");
_
Dans l'en-tête d'envoi nodejs
, référence d'en-tête d'envoi :
_res.writeHead(200, {'X-XSS-Protection':0 });
// or express js
res.set('X-XSS-Protection', 0);
_
Dans ce cas, être un contributeur pour la première fois sur le forums créatifs , (une sorte de vBulletin construire) et être réduit à poster un PM sur le Les modérateurs avant l’accès au forum peuvent facilement résumer la nature du problème à partir des réponses les plus populaires citées ci-dessus. La commande était
http://forums.creative.com/private.php?do=insertpm&pmid=
Et comme décrit ci-dessus, les données réelles étaient "des données HTML/XML brutes dans un élément input/select/textarea".
La condition générale requise pour gérer un tel bogue (ou une telle fonctionnalité) chez l’utilisateur est une sorte de solution miracle rapide. Cet article discute de la possibilité de vider le cache, de réinitialiser les paramètres Chrome, de créer un nouveau_utilisateur ou de réessayer l'opération avec une nouvelle version bêta. Il a également été suggéré de lancer une nouvelle instance avec les éléments suivants:
google-chrome-stable --disable-xss-auditor
Le lancement a réellement fonctionné dans ce W10 1703 Chrome 061 édition après cette version modifiée:
chrome --disable-xss-auditor
Cependant, lors de la connexion au site et de la tentative de publication, la même erreur était générée. Peut-être que la syntaxe veut être affinée ou que quelque chose d'autre ne va pas.
Il semblait alors raisonnable de lancer Edge et de republier à partir de là, ce qui n’a posé aucun problème.
Ceci peut aider dans certaines circonstances. Modifiez le fichier Apache httpd.conf
et ajoutez
ResponseHeader set X-XSS-Protection 0
Il peut ont été corrigés dans Version 58.0.3029.110 (64-bit)
.
J'ai remarqué que s'il y avait une apostrophe, '
dans le texte Chrome la bloquerait.
J'ai résolu le problème!
Dans mon cas, lors de la soumission, j'envoie le code HTML à l'action. Dans le modèle, j'avais une propriété qui accepte le code HTML avec "AllowHTML".
La solution consiste à supprimer cette propriété "AllowHTML" et tout va bien!
Evidemment je n'envoie plus le code HTML à l'action car dans mon cas je n'en ai pas besoin
C'est un bogue Chrome. Le seul remède consiste à utiliser FireFox jusqu'à ce qu'ils résolvent ce bug Chrome. Auditeur XSS, supprimer une page qui fonctionne correctement depuis 20 ans semble être un symptôme et non une cause.
Lorsque je mets à jour href
de javascript:void(0)
à #
dans la page de demande POST, cela fonctionne.
Par exemple:
<a href="javascript:void(0)" id="loginlink">login</a>
Changer en:
<a href="#" id="loginlink">login</a>