我正在使用 jQuery ajax 调用来设置 textarea 的值。
如果我使用 php 的 htmlentities() 然后使用 jquerys $(textarea).val() 它不会显示字符而是显示实体。
没有 htmlentities() 一切看起来都很好。使用 val() 时没有 XSS,但如果在没有 jquery 的情况下访问脚本,则当然容易受到攻击。
怎么了?
.load() 有效,但我不能使用它。load() 在我使用 BBcodefunctions 后才中断(DOM 不会更新 textarea,在 Firebug 中一切看起来都应该如此)
使用 val() 后,html() 会中断。
为什么?
jQuery代码:
$.ajax({
type: 'GET',
encoding:"UTF-8",
dataType:"html",
contentType: "text/plain;
charset=UTF-8",
url: "/quote.php?id=1",
context: document.body
}).done(function(data) { $('textarea').val(data); });
PHP代码:
htmlentities($nonEncodedRawText, ENT_QUOTES, 'UTF-8')
结果在文本框中:
</textarea><script type="text/javascript">
直接访问的结果:
</textarea><script type="text/javascript">