0
我正在为jquery的.getJSON函数获取JSON数据。我正在考虑使用.text来保证数据的安全(我相信这是正确的做法)。我测试过了,JSON是正确的。Javascript/jquery防止注入执行代码
这里是我对工作的脚本:
var firstpost = 0;
var firstrun = 0;
var lastpost = 0;
^全局变量
$.getJSON('chatget.php', {
'chatroomid' : '<?php echo $chatroomid; ?>',
'firstpost': firstpost,
'lastpost': '1'},
function(data) {
var template = '<div id="_ID_" class="chatpost"> <div><b>_NAME_ </b> <a href="_URL_"> _USERNAME_ </a> _DATETIME_</div> <div><em>_TARGETS_</em></div> <div>_TEXT_</div> </div>';
var appendhtml ='';
var datarows = data['New'].length;
lastpost = data['New'][datarows]['CPid'];
// Each row processor
$.each(data['New'], function(index, col){
// Get initial data
if (firstrun == 0){
firstpost = col.CPid;
firstrun = 1;}
// process targets
if(col.Targets !== null){
var target = col.Targets.split(',');
var trow = target.length;
var targets = '';
for (var i=0, len=target.length; i<len; i++){
targets = targets + '@' + target[i] + ' ';}
}else {var targets = '';};
// Append data to chatroom
var cpid = $.text(col.CPid);
var name = $.text(col.Name);
var username = $.text(col.Username);
var url = $.text(col.Url);
var text = $.text(col.Text);
var datetime = $.text(col.Datetime);
var targets = $.text(targets);
appendhtml = template.replace('_ID_',cpid).replace('_NAME_',name).replace('_USERNAME_',username).replace('_URL_',url).replace('_TEXT_',text).replace('_DATETIME_',date).replace('_TARGETS_', targets);
$('#chatroom').append(appendhtml);
});
} // End Data function
) // End Get Json
出于某种原因,因为我在这个代码改变了一些东西导致崩溃萤火所以无论是我找到了在萤火虫中的错误或我在编码中做了非常错误的事情。我不认为我正确使用$ .text ...
此外我想获取数据['新']对象/数组中的最后一个值。 .length似乎没有工作。
var datarows = data['New'].length;
lastpost = data['New'][datarows]['CPid'];
这是我的第一个javascript/jquery程序,所以如果你在代码中看到错误,请告诉我。
物体没有长度,所以它不会令人惊讶,它不起作用?是的,你用错误的方式使用text(),这是一种链接到元素的方法。至于安全,这是不安全的,因为它是客户端,不管你使用什么方法,它永远不会是安全的。 – adeneo 2013-03-19 03:26:18
对普通用户来说安全。它从服务器接收用户输入的信息。该输入从未被清除,但不能执行PHP端。我只是想阻止任何HTML /脚本能够在数据追加之前被执行。一旦被附加,任何脚本都应该显示为纯文本。 – Rujikin 2013-03-19 03:31:02
验证客户端上的用户输入确实不会使其安全,最多可以使验证对表单稍微漂亮。在您将其发送回页面之前,您需要在服务器侧验证数据。 – adeneo 2013-03-19 03:42:13