如何在PHP和Javascript中保护我的jQueryAJAX调用


How to secure my jQuery AJAX calls in PHP and Javascript?

我有以下PHP和Javascript代码片段,其中我正在进行jQueryAJAX调用,以从PHP获取数据并将其显示在HTML中。

PHP code
<?php
myfunction();
function myfunction()
{
 $myvar = $_POST['q']." how are you?";
 $myvar2 = $_POST['z'];
 echo $myvar."'n".$myvar2;
}
?>
HTML code
<div id="mydiv"></div>
Javascript code
var data =" hello world";
var data2=" hello all";
function run()
{
 $.ajax(
               {
                   url: 'myscript.php',
                   data: {'q': data,'z':data2},
                   type: 'post',
                   success: function(output) 
                   {
                          //alert(output);
                          document.getElementById("mydiv").innerHTML += output; //add output to div  
                   }
                }
            );
}

上面的代码运行良好。

我想保护这个AJAX调用以防止它被黑客攻击,因为我正在进行一个对所有人都可见的AJAX调用。此代码易受黑客攻击。我的问题是,我应该在什么地方进行额外的检查,以确保AJAX调用的安全?

我知道的一件事是,我应该在我的PHP文件中使用以下代码片段

if (!$_POST['q'] && !$_POST['z'])
{
  exit;
}|
else
{
  myfunction(); //call myfunction only if page is posted
}

我应该在PHP和Javascript文件中使用哪些额外的检查?

黑客使用了很多技巧,所以你只需要让它变得足够困难/耗时,以至于回报不值得投资。

首先,你永远不应该回复帖子中的内容。众所周知,黑客会用这样的洞进行各种各样的注射。

为了避免这种情况,只需先取消价值观。

对于MySQL使用:mysqli_real_escape_string

回显HTML(echoprint)时,请使用:htmlspecialchars

要使用exec执行代码,请使用escapeshellcmdescapeshellarg

示例:

<?php
    define('CHARSET', 'ISO-8859-1');
    define('REPLACE_FLAGS', ENT_COMPAT | ENT_XHTML);
    function html($string) {
        return htmlspecialchars($string, REPLACE_FLAGS, CHARSET);
    }
    $myvar = $_POST['q']." how are you?";
    $myvar2 = $_POST['z'];
    echo html($myvar."'n".$myvar2);
?>

您使用的POST很好。

  1. 您还可以使用"会话"进行安全保护
  2. 为了代码安全,您可以将函数和其他重要代码放在一些不同的php文件中,并将它们包含在主文件中。直接从中保持代码可见