我在网站上搜索了Acunetix Web漏洞扫描程序,我收到了Host Header攻击漏洞。
在描述中说我写了
(PHP中的_ SERVER [" HTTP_HOST"]
但我没有,我也不知道如何解决这个问题。
以下是受影响文件的标题
<?php
include 'core/init.php';
if($user->is_loggedin()){
redirect('index.php');
exit();
}
if($detect->isMobile()){
redirect('http://m.website.com/prijava.php');
exit();
}
if(isset($_POST['prijava'])){
$post = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
if(time() - $user->failTime($post['email']) < 600 && $user->failCount($post['email']) >= 3){
$err = '<p style="color:red;">Račun vam je zaključan na 10 minuta.</p>';
}else{
if(empty($post['email']) || empty($post['password'])){
$err = '';
}elseif($id = $user->prijava($post['email'], $post['password'])){
if($user->isActive($post['email'])){
$_SESSION['user'] = $id['id'];
$user->resetFail();
redirect('index.php');
exit();
}else{
$err = '<p style="color:red;">Korisnički račun nije aktiviran.</p>';
}
}else{
if($user->checkMail($post['email'])){
if($user->storeFail($post['email'])){
$err = '<p style="color:red;">Lozinka i email se ne poklapaju.</p>';
}
}else{
$err = '<p style="color:red;">Lozinka i email se ne poklapaju.</p>';
}
}
}
}
?>
和html
<head>
<meta charset="UTF-8">
<title>Prijava</title>
<link rel="shortcut icon" href="images/favicon.png" type="image/png">
<link rel="stylesheet" type="text/css" href="css/sign.css?<?php echo time(); ?>">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</head>
以下是漏洞描述的图片:
总结一下,我该如何保护我的网站,谢谢。
答案 0 :(得分:1)
这是解决主机头攻击的代码。必须指定URL。
$allowed_domains = array('yourdomain1', 'yourdomain2', 'yourdomain3');
$default_domain = 'yourprimedomain';
if (in_array($_SERVER['HTTP_HOST'], $allowed_domains, TRUE))
{
$domain = $_SERVER['HTTP_HOST'];
}
else
{
$domain = $default_domain;
}
if (! empty($_SERVER['HTTPS']))
{
$config['base_url'] = 'https://'.$domain;
}
else
{
$config['base_url'] = 'http://'.$domain;
}
&#13;
上
<base href="<?php echo base_url(); ?>" />
并使用编辑运行测试并在mozilla上重新发送或使用curl进行测试。