运用HTTP Headers防护WEB进犯(Part3)
之前发布的《运用HTTP Headers防护WEB进犯(Part1)》,《运用HTTP Headers防护WEB进犯(Part2)》中叙述了怎么运用HTTP Headers对WEB进犯进行防护,比方运用X-Frame-Options以及X-XSS-Protection。在本文中,咱们将探究怎么运用HTTP Headers捍卫咱们的Cookies。
简介
在用户会话中Cookies是一个非常重要的东西,一个身份验证的Cookies就适当所以暗码。捍卫这些身份验证的Cookies是一个非常重要的论题。在本文中,咱们将演示怎么在PHP运用中履行某些Cookies特点从而在某些进犯中维护咱们的Cookies。
运用HTTP Header维护Cookies
这是一个已知的现实,跨站脚本进犯是一个非常风险的缝隙,其能够让进犯者从用户浏览器窃取到Cookies。HttpOnly的引入能够禁用外部JavaScript脚本读取Cookies。即便运用程序自身存在XSS缝隙,只需敞开了HTTPOnly符号就无法读取Cookies。
现在咱们就打开上一篇文章中运用过的简略运用程序。
首要,调查HTTP呼应中的头信息
HTTP/1.1 200 OK
Date: Sun, 12 Apr 2019 15:07:14 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=a2ed2bf468dd811c09bf62521b07a023; path=/
Content-Length: 820
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
正如咱们所见,在Set-Cookie头中没有额定的符号。假如该运用存在Xss缝隙那么进犯者就能够轻松获取到Cookies信息。
为了防止这种状况,咱们能够运用HTTPOnly符号。这使得咱们只能够经过HTTP协议来发送Cookies信息,而不能运用JavaScript。
启用HTTPOnly符号
如下示例代码片段中演示了在PHP运用中启用HTTPOnly符号的一种办法:
php
ini_set("session.cookie_httponly", "True");
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";
}
}
?>
charset="UTF-8">
Admin Home
rel="stylesheet" href="styles.css">
id="home">
id=text> id="text2">Welcome to Dashboard... You are logged in as: php echo $_SESSION['admin_loggedin']; ?> href="logout.php">[logout]
action="" method="GET">
id="search">
id="text">Search Values type="text" name="search" id="textbox">
type="submit" value="Search" name="Search" id="but"/>
id="error"> id="text2">You Entered:php echo $text; ?>
从上面的代码片段中咱们能够看出下面这一行代码是用来敞开HTTPOnly的:
ini_set("session.cookie_httponly", "True");
接下来咱们就来看看在HTTPOnly符号敞开之后取得的HTTP头信息
HTTP/1.1 200 OK
Date: Sun, 12 Apr 2019 15:03:15 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=36cb82e1d98853f8e250d89be857a0d3; path=/; HttpOnly
Content-Length: 820
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
[1] [2] [3] 黑客接单网