我有以下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文件中使用哪些额外的检查?
答案 0 :(得分:4)
黑客使用了很多技巧,所以你只需要让它变得很难/耗时,以至于奖励不值得投资。
首先,你永远不应该回复帖子中的内容。众所周知,黑客会用这样的洞进行各种注射。
为了避免这种情况,首先只是取消价值。
对于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);
?>
答案 1 :(得分:2)
你正在使用好的POST。