Pracuję z usługą internetową, która będzie dać mi wartości takich jak:Jak rozpakować html w javascript?
var text = "<<<&&&";
i trzeba wydrukować to wyglądało "< < < & & &" z javascript.
Ale tutaj jest haczyk: nie mogę użyć wewnętrznego HTML (właściwie wysyłam te wartości do biblioteki prototypów, która tworzy węzły tekstowe, więc nie przechwytuje mojego surowego łańcucha html. Jeśli edycja biblioteki nie byłaby opcja, jak byś przywróceniu znaczenia tej html?
muszę undertand real deal tutaj, co to ryzyko unescaping tego rodzaju strun? w jaki sposób innerHTML prawda? i jakie istnieją inne opcje?
EDIT - Problem nie polega na używaniu javascript normalnego escape/unescape lub nawet jQuery/prototypu ich implementacji, ale na kwestiach bezpieczeństwa, które mogą pochodzić od nas którekolwiek z tych ... aka "Powiedzieli mi, że ich używanie jest dość niebezpieczne"
(Dla tych, którzy próbują podszkodzić temu, co do cholery rozmawiam z wewnętrznym HTML-em, odrysowując ten dziwny ciąg, sprawdź ten prosty przykład:
<html>
<head>
<title>createTextNode example</title>
<script type="text/javascript">
var text = "<<<&&&";
function addTextNode(){
var newtext = document.createTextNode(text);
var para = document.getElementById("p1");
para.appendChild(newtext);
}
function innerHTMLTest(){
var para = document.getElementById("p1");
para.innerHTML = text;
}
</script>
</head>
<body>
<div style="border: 1px solid red">
<p id="p1">First line of paragraph.<br /></p>
</div><br />
<button onclick="addTextNode();">add another textNode.</button>
<button onclick="innerHTMLTest();">test innerHTML.</button>
</body>
</html>
Jest to naprawdę przydatne. Tak więc, jeśli coś pochodzi od użytkownika, to powinien to być TextNode ?? – DFectuoso
@DFectuoso: To jest jedno podejście, które działa, jeśli nie chcesz, aby mogły korzystać z jakichkolwiek funkcji HTML. Jeśli, na przykład, chcesz, aby stylizował ich tekst, musisz dowiedzieć się, jak to zrobić bezpiecznie ... – Stobor
Interesujący wgląd w kwestie bezpieczeństwa. –