如何在PHP和Javascript中保护我的jQuery AJAX调用?

时间:2013-11-24 03:26:50

标签: javascript php jquery html ajax

我有以下PHP和Javascript代码片段,其中我正在进行jQuery AJAX调用以从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文件中使用哪些额外的检查?

2 个答案:

答案 0 :(得分:4)

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

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

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

对于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);

?>

答案 1 :(得分:2)

你正在使用好的POST。

  1. 您可以使用“会话”来提高安全性。
  2. 为了代码安全,您可以将您的函数和其他重要代码放在一些不同的php文件中,并将它们包含在主文件中。直接显示您的代码。