HTML 요소를 해석하지 않고 입력 요소에서 값의 실제 텍스트를 검색하는 JavaScript 또는 MooTools의 방법이 있습니까? 아래의 예제를 참조하십시오. 내가/입력 텍스트 입력 상자에 직접 <script>alert('scrubbed');</script>
를 복사 할 경우 작동html 특수 엔터티를 해석하는 브라우저없이 입력 값을 검색하는 방법은 무엇입니까?
<div id="output">
<p>Your text is: <b>[<script>alert('scrubbed');</script>]</b></p>
</div>
하는 것으로,하지만 난 페이지를로드 한 후 바로 삽입하면 실패 : 내 원하는 결과입니다.
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>scrubtest</title>
</head>
<body id="scrubtest" onload="">
<script type="text/javascript" language="JavaScript" src="/js/mootools-core.js"></script>
<input type="text" name="scrubtext" value="<script>alert('scrubbed');</script>" id="scrubtext"/><br />
<input type="button" value="Insert" onclick="insertText();"/><br />
<input type="button" value="Get via MooTools" onclick="alert($('scrubtext').get('value'));"/><br />
<input type="button" value="Get via JavaScript" onclick="alert(document.getElementById('scrubtext').value);"/><br />
<div id="output">
</div>
<script type="text/javascript" charset="utf-8">
function insertText()
{
var stext = $('scrubtext').get('value');
var result = new Element('p', {html: "Your text is: <b>["+stext+"]</b>"});
result.inject($('output'));
}
</script>
</body>
</html>
그래도 효과가 있지만 이미 한 번 살균 된 텍스트를 "살균"해야한다고 생각하지 않습니다. 입력 값은 서버 측 (PHP) 유효성 검사 결과입니다 : $ destination [ 'transit_time'] = trim (htmlspecialchars ($ destination [ 'transit_time'])) ENT_QUOTES)); 문서 주위로 옮길 때 위생적으로 유지하고 싶습니다. – CaptainQwyx
위생 처리하지 않았습니다. 당신은 HTML을 이스케이프 처리합니다. '&'는 HTML로 표시되도록 이스케이프해야합니다 (브라우저는 HTML 인코딩을하지 않더라도 용서하고 표시 할 수 있습니다). 그것의 규칙. 이것을 따라 가라. –
하지만 그건 정확히 당신이 원하는 것입니다. '(input) = "<">'을 쓰면 (simpified), 입력 값은 **'''이됩니다. 값을'< '으로하고 싶다면'& lt;'로 이스케이프해야합니다. 그것이 단순히 작동하는 방법이며, 그것에 대해 잘못된 것은 없습니다. – RoToRa