行使HTTP Headers 防止WEB进攻(一)语言&工具

来源:互联网 / 作者:SKY / 2017-12-01 05:24 / 点击:
我们常常可以或许看到像Xss,点击挟制,会话挟制等各类进攻伎俩。在这个系列文章中,我们会先容各类可用来防止常见Web进攻的HTTP头以及通过一个PHP实例来演示着实现

我们常常可以或许看到像Xss,点击挟制,会话挟制等各类进攻伎俩。在这个系列文章中,我们会先容各类可用来防止常见Web进攻的HTTP头以及通过一个PHP实例来演示着实现要领。本系列文章旨在给开拓者一个提醒,怎样行使HTTP头对一些进攻举办防止。

搭建试验情形

数据以及尝试情形下载地点在文末!

你可以在XAMPP、WAMP、LAMP、MAMP下配置PHP-MYSQL应用,虽然这个选择完全取决于你的兴趣。

在本尝试中,我行使的是搭载MAMP的苹果Mac呆板,我把以是文件都放在了根目次下的“sample”文件夹内。

应用措施成果先容

配置完这个尝试样品之后,打开主页

HTTPHeaders Web进攻 点击挟制

从上图中我们看以看到,这个页面就是一个简朴的登录页面,它会举办根基的处事端验证。

用户输入字段不能为空,完成这个成果只需行使PHP的empty()函数。因此用户假如不输入点对象点击登录,会返回下面这个页面

HTTPHeaders Web进攻 点击挟制

假如输入的用户名暗码不匹配的话,会返回以下页面,虽然完成这一步调是必要执行数据库查询操纵的。

HTTPHeaders Web进攻 点击挟制

输入的用户暗码正确,主页表现用户已登录。

如下所示,这是行使MySQLi筹备语句完成的。

$stmt = $mysqli->prepare("select * from admin where username=? and password=?"); $stmt->bind_param("ss",$username,$password); $stmt->execute(); username: admin password: 1q2w3e4r5t

留意:在这个示例中,给定的暗码以SHA1算法方法存储在数据库中,这个暗码行使在线器材可以轻松解出来。

登录进去之后会看到一个表单,这个表单含有一个简朴的Xss裂痕。

HTTPHeaders Web进攻 点击挟制

此刻我们举办抓包,当我们登岸时留意调查默认的Header信息。

HTTPHeaders Web进攻 点击挟制

在乐成登录之后我们看到一个搜刮框,这里接管用户输入并返回相干信息给用户。

HTTPHeaders Web进攻 点击挟制

下面是构建登录后页面的代码

<?php session_start(); session_regenerate_id(); if(!isset($_SESSION['admin_loggedin'])) { header('Location: index.php'); } if(isset($_GET['search'])) { if(!empty($_GET['search'])) { $text = $_GET['search']; } else { $text = "No text Entered"; } } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Admin Home</title> <link href="http://www.chinaz.com/program/2015/0512/styles.css"> </head> <body> <div><center> </br><legend><text id=text><text>Welcome to Dashboard...</text>
</br></br> You are logged in as: <?php echo $_SESSION['admin_loggedin']; ?>
<a href="http://www.chinaz.com/program/2015/0512/logout.php">[logout]</a></text></legend></br> <form action="" method="GET"> <div> <text>Search Values</text><input type="text">
</br></br> <input type="submit" value="Search"/> <div><text>You Entered:</text><?php echo $text; ?></div> </div> </form></center> </div> </body> </html>

行使X-Frame-Options相应头防止点击挟制

起首我们要接头的就是行使X-Frame-Options缓解点击挟制

凡是,进攻者在裂痕页面嵌入iframe标签执行点击挟制进攻。

在我们这个尝试中,会在用户打点页面中加载一个iframe标签,如下所述。

乐成登录之后会进入页面

<!DOCTYPE html> <html> <head> <title>iframe</title> <meta charset="UTF-8"> <meta content="width=device-width, initial-scale=1.0"> </head> <body> <iframe src="http://localhost/sample/home.php"></iframe> </body> </html>

在统一台处事器上,我将此页面生涯为iframe.html。在赏识器中加载home页面的同时也会加载这个iframe

HTTPHeaders Web进攻 点击挟制

固然有多钟方案来防止此题目,可是本文是接头X-Frame-Options相应头这种方案。

X-Frame-Options有以下3个值可以行使。

DENY:暗示该页面不应承在 frame 中展示,即即是在沟通域名的页面中嵌套也不应承。

SAMEORIGIN:暗示该页面可以在沟通域名页面的 frame 中展示。

ALLOW-FROM:暗示该页面可以在指定来历的 frame 中展示。

X-Frame-Options: DENY

让我们先从X-Frame-Options: DENY开始

打开home.php文件,添加下面这一行

header(“X-Frame-Options: DENY”);

阅读延展

1
3