我对一些事情有点困惑,我正在通过Jquery做一个Ajax请求,我在一个xml文档中发送回编码的数据(使用htmlentities来阻止XSS ),但问题是当我解析XML并获得数据时,似乎Jquery自动解码htmlentities,而我最终得到了易受攻击的数据。
您是否知道如何防止Jquery解码编码的数据,或者我在ajax请求中缺少一个选项。
任何帮助都是非常感谢的,因为我被困在这一点上。
以下是我当前的ajax选项:
$.ajax({
url: 'ajax_handle.php',
data: {pg: cpage, rid: rid},
type: 'POST',
cache: false,
error: function(xhr, ajaxOptions, thrownError){
$( button ).val( 'Error' );
},
success: function(xmldata){ /* Parsing here */ }
}
不知何故,当我使用Jquery find()并获取文本时,所有用htmlentities编码的数据都会被解码。
示例:
Data : <c><cu>Test</cu><cb> htmlentitiesgez564<script></cb></c>
解析后的数据:
cu : Test
cb : htmlentitiesgez564<script>;
你可以看到这有多危险,你知道怎么解决这个问题吗?
发布于 2009-11-04 21:23:56
jQuery会自动解码数据,但只要您不对数据执行eval
操作或将数据注入到DOM中,就不会发生任何事情。因此,例如,如果您想将此代码注入到DOM中,则不必使用html方法,而必须使用text方法:
$('#someDiv').text('<script>alert("ok");</' + 'script>');
发布于 2009-11-04 20:56:10
尝试将dataType选项添加到ajax配置对象
$.ajax({
url: 'ajax_handle.php',
data: {pg: cpage, rid: rid},
type: 'POST',
dataType: "text",
cache: false,
error: function(xhr, ajaxOptions, thrownError){
$( button ).val( 'Error' );
},
success: function(xmldata){ /* Parsing here */ }
}
这应该会告诉jQuery收到的响应将被解释为文本
https://stackoverflow.com/questions/1673503
复制相似问题