Nous avons discuté d'une solution client-seule dans javascript qui fournit des moyens pour un visiteur de site pour annoter une page pour l'impression et son exploitabilité en termes de XSS ou vecteur d'attaque similaire. Justification: Il existe un processus potentiellement long qui détermine les données à afficher. Afin de documenter les mesures prises, un textarea (sans enfermer forme) est prévu que l'utilisateur peut écrire du texte arbitraire qui n'est pas censé être transféré au serveur. Le texte initial est statique, par ex. un petit jeu d'instructions sur la manière d'utiliser ce champ, de sorte qu'il n'y ait aucune possibilité (évidente) pour un attaquant de construire une URL contenant un javascript malveillant pour cette zone de texte. Une fois que les utilisateurs ont modifié ce texte, ils impriment la page (et leurs notes). Les notes sont perdues une fois que l'utilisateur quitte la page.XSS sans qu'un serveur soit impliqué - est-ce dangereux?
En cas de « trop d'erreur de prose » est ici quelques exemples de code:
<span id="descriptionHeader">Description of the result</span>
<div id="description">
<textarea id="descriptionEditor" rows="15" cols="80" type="text"
ondblclick="replaceDescription()">
Edit this text to add a detailed description to this page.
Double click to this editing area to finish editing.
If you want to edit the text again, do a double click to the
description header.
You may use html (e.g. <br>) for formatting.
</textarea>
</div>
<script type="text/javascript">
var header = getElem("descriptionHeader");
var editor = getElem("descriptionEditor");
var description = getElem("description");
function empty() {
}
function editDescription() {
header.ondblclick = empty;
editor.value = description.innerHTML;
description.innerHTML = "";
description.appendChild(editor);
}
function replaceDescription() {
header.ondblclick = editDescription;
description.removeChild(editor);
description.innerHTML = editor.value;
}
</script>
Encore une fois:
- Le texte est jamais traité côté serveur, seule la description statique ("comment use ") est toujours envoyé du serveur au client, jamais du client au serveur.
- L'utilisateur peut ajouter des éléments javascript comme ils l'entendent et exploiter l'enfer hors d'eux-mêmes.
- Je ne peux pas penser à un scénario où cela pose un risque pour la sécurité, mais un sentiment reste mal au cœur ...
Note: La question ne concerne pas l'élégance de cette solution ou d'une bibliothèque qui ne montage en ligne plus confortable, mais purement sur les risques de sécurité imaginables - le cas échéant.
Nice - Je n'ai pas encore pris cet angle en compte. Merci –
Merci beaucoup - aussi pour vos commentaires à Bobinces réponse. Cela devrait aider à maintenir la discussion sur la fourniture d'un «impact faible» et une solution simple pour des sujets comme celui-ci. –
En fait, l'aperçu en direct souffre de la même auto-exploitabilité, car il ne filtre pas aussi complètement que le côté serveur (par exemple, vous pouvez entrer javascript dans les réponses/questions qui seront échappées lorsque soumis, mais pas dans l'aperçu. même problème que je l'ai dit ici :) –