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

来源:互联网 / 作者:SKY / 2017-12-01 05:27 / 点击:
在前一篇文章《行使HTTP Headers防止WEB进攻(Part1)》中我们相识到怎样行使X-Frame选项防止点击挟制进攻。在本文中我们将会接头其它一个HTTP Header选项,X-XS

在前一篇文章《行使HTTP Headers防止WEB进攻(一)》中我们相识到怎样行使X-Frame选项防止点击挟制进攻。在本文中我们将会接头其它一个HTTP Header选项,X-XSS-Protection。和前一篇文章相同,我们会先看看裂痕网页然后再行使这个HTTP头选项来防止。

从源码说明

配置与前一篇文章相同,用户乐成登录之后会呈现一个节制台界面,这里可以举办搜刮,如下代码即实当代码:

<?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>

从上面的代码中,我们可以看到应用措施没有对用户输入举办过滤而留下了裂痕。

接着,我们从HTTP相应头信息中看到应用措施没有任何特另外掩护机制。

HTTP/1.1 200 OK Date: Sun, 12 Apr 2015 14:53:37 GMT Server: Apache/2.2.29 (Unix) mod_fastcgi/2.4.6 mod_wsgi/3.4 Python/2.7.8 PHP/5.6.2 mod_ssl/2.2.29 OpenSSL/0.9.8y DAV/2 mod_perl/2.0.8 Perl/v5.20.0 X-Powered-By: PHP/5.6.2 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-Cookie: PHPSESSID=f94dc2ac2aa5763c636f9e75365102b5; path=/ Content-Length: 820 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html; charset=UTF-8

测试举办时

在搜刮框执行一个简朴的JavaScript剧本,看看是否乐成执行

Web进攻 HTTPHeaders 网页裂痕

好吧,我认可这看起来好像没有乐成执行,那就打开节制台看看错误信息吧。

Web进攻 HTTPHeaders 网页裂痕

从节制台信息中可以看到谷歌Chrome阻止了这个剧本。其它,错误提醒信息中指出处事器没有启用X-XSS-Protection可能Content-Security-Policy头。

我们可以通过启用X-XSS-Protection可能Content-Security-Policy头举办过滤。

行使如下代码禁用掩护

header("X-XSS-Protection: 0");

将上面的代码添加进源码

<?php session_start(); session_regenerate_id(); header("X-XSS-Protection: 0"); 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>
阅读延展

1
3