Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不';当通过ajax在结果中调用jquery.html()时,htmlspecialchars()是否可以防止javascript?_Javascript_Php_Jquery_Html_Ajax - Fatal编程技术网

不';当通过ajax在结果中调用jquery.html()时,htmlspecialchars()是否可以防止javascript?

不';当通过ajax在结果中调用jquery.html()时,htmlspecialchars()是否可以防止javascript?,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我编写了一个php和jQueryAjax脚本,效果很好。但是下面的脚本工作缓慢,我发现这种类型的脚本容易受到XSS攻击,我在这个链接的第一个答案中发现了一些与此相关的东西。以下是我的jquery代码: <script> $(".question").keyup(function(){ var question = document.forms["myForm"]["question"].value; $.ajax({ type: "POST", url: "http://

我编写了一个php和jQueryAjax脚本,效果很好。但是下面的脚本工作缓慢,我发现这种类型的脚本容易受到XSS攻击,我在这个链接的第一个答案中发现了一些与此相关的东西。以下是我的jquery代码:

<script>
$(".question").keyup(function(){
 var question = document.forms["myForm"]["question"].value;
 $.ajax({
  type: "POST",
  url: "http://www.example.com/view_result.php",
  data: { question: question }
 })
.done(function( msg ) {
  $("#show_typing_question").html( msg );
 });
});
</script>

$(“.question”).keyup(函数(){
var question=document.forms[“myForm”][“question”].value;
$.ajax({
类型:“POST”,
url:“http://www.example.com/view_result.php",
数据:{问题:问题}
})
.done(函数(msg){
$(“#show#u typing_question”).html(msg);
});
});
以下是view_result.php脚本:

<?php
 function html_converter($val)
  {
    $turned = array('`&lt;b&gt;','`&lt;/b&gt;','`&lt;mark&gt;','`&lt;/mark&gt;');
    $turn_back = array('<b>','</b>','<mark style="background-color:#999;">','</mark>');
    $val = str_replace( $turned, $turn_back, $val );
    $val = preg_replace('/(?:(?:\r\n|\r|\n)\s*){2}/s', "\n\n", $val);
    return $val;
  }
  $question = $_POST['question'];
  $question = htmlspecialchars($question, ENT_QUOTES, 'UTF-8');
  echo html_converter($question);
?>


如何在不使用ajax的情况下,仅使用jquery函数编写整个脚本。这个脚本安全吗?

我想你是在问如何简单地避免客户端XSS攻击。我认为您目前正在使用PHP来“清理”来自用户的问题数据。如果这不是你要问的,请澄清你的问题

如果要使用来自用户的文本,请不要使用
.html()
进行设置,只需使用
.text()


然后,不需要转义,因为您正在文本上下文中使用文本。

对不起,我不清楚.html()和.text()。我试图只在textarea字段中显示用户键入的内容,我希望除了$turned array()中提到的一些内容外,所有输入都应转义。当用户快速键入时,此ajax系统会导致一些问题。是否可以只在jquery中完成所有的事情,这样就不需要加载?您尝试过我的答案了吗?它执行您想要的操作。jquery.text()将转义所有html标记,包括$tured变量中提到的标记。只有.html()适用于$turned变量的html标记。
$('.question').keyup(function(){
  var question = document.forms['myForm']['question'].value;
  $('#show_typing_question').text(question);
});