我有以下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(echo
或print
)时,请使用:htmlspecialchars
。
要使用exec
执行代码,请使用escapeshellcmd
和escapeshellarg
。
示例:
<?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很好。
- 您还可以使用"会话"进行安全保护
- 为了代码安全,您可以将函数和其他重要代码放在一些不同的php文件中,并将它们包含在主文件中。直接从中保持代码可见