动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.java applet 画图板.
.2005年4月8日--正式开始我的Java.
.JavaWebStudio 2005新感觉.
.一个生产-消费模式的XML解析实现.
.Weblogic中使用持久缓存技术优化.
.Sun Java System Access Manager.
.使用Ant和Weblogic开发EJB.
.Java Web Services的远端调用.
.Java中用Robot类控制鼠标和键盘的.
.JSSE访问带有未验证证书的HTTPS.
.使用 Java 1.2 的 Authenticator.
.EJB的Session Bean编程规则.
.试析J2EE与.NET时代的商业利润(转.
.如何在SPRING中实现事务暂停.
.不使用function计算给定两个日期.
.Java应用热遍全球.
.用Java创建带图像的菜单来美化界.
.J2ME学习札记1.
.Apache与Tomcat整合问题的新方法.
.EJB 最佳实践:工业强度的 JNDI .

用mod_security保障Web Services的安全二

发表日期:2008-1-5 |



  将Web服务与mod_security结合起来
  
  Blue银行的web服务使用www.bluebank.example.com/axis/getBalance.jws的URL。为这个资源创建一套规则通常一个不错的主意。为达此目的,Blue银行将此资源通过以下方式加入到httpd.conf:
  
  <IfModule mod_security.c>
  SecFilterEngine On
  SecFilterDefaultAction "deny,log,status:500"
  # Other rules
  # ------- Rules for web services --------------------------
  <Location /axis/getBalance.jws>
  SecFilterInheritance Off
  SecFilterDefaultAction "deny,log,status:500"
  SecFilterScanPOST On
  SecFilterCheckURLEncoding On
  SecFilterCheckUnicodeEncoding On
  </Location>
  #---------------------------------------------------------------</IfModule>
  
  下面的指令块为/axis/getBalance.jws应用了过滤标准。为了保护web服务它添加了必要的规则。这些规则在<Location>块中,如下:
  
  # ------- Rules for web services --------------------------
  <Location /axis/getBalance.jws>
  SecFilterInheritance Off
  SecFilterDefaultAction "deny,log,status:500"
  SecFilterScanPOST On
  SecFilterCheckURLEncoding On
  SecFilterCheckUnicodeEncoding On</Location>
  #---------------------------------------------------------------
  
  在这里有两个重要的指令:
  
  SecFilterInheritance Off
  
  这个指令关闭其他所有规则,为新的location建立一套规则创建一个干净的空间。(译者注:初始化,建立新空间)
  
  SecFilterScanPOST On
  
  由于web服务的方法调用是通过POST,所以这个指令是打开POST过滤器。
  
  有了上面的配置,Blue Bank已经在mod_security中部署了一个“护盾”(译者注:防火墙)。该“护盾”也知道它的防护目标——客户端通过SOAP封套发送的id的内容。
  
  防范攻击
  
  作为防护所有恶意请求的第一步,Blue银行需要限制从客户端发送的id的值,防止传来无效值。SOAP请求用XML标签将id信息发送到web服务的代码中,像如下这样:
  
  <q1:getInput xmlns:q1="http://DefaultNamespace">
  <id xsi:type="xsd:string">12123</id></q1:getInput>
  
  为了过滤该请求,mod_security必须有一些途径去读取与标签相关的值(在这里标签是id);这个例子中的值是12123,mod_security提供一些途径限制通过POST请求发送的值。其中的一个方法就是使用自定义过滤器:
  
  <Location /axis/getBalance.jws>
  SecFilterInheritance Off
  SecFilterDefaultAction "deny,log,status:500"
  SecFilterScanPOST On
  SecFilterCheckURLEncoding On
  SecFilterCheckUnicodeEncoding On
  SecFilterSelective POST_PAYLOAD "<\s*id[^>]*>" chain</Location>
  
  上面标示出来的行对请求中的id进行限制。POST_PAYLOAD截取POST数据块并与正则表达式(<\s*id[^>]*>)进行匹配。该正则表达式确保id标签存在,当存在的情况下才进行其余的检查。换句话说,假如id标签存在,mod_security继续下一个检查。
  
  假如发送的POST请求中存在一个id,服务器能够执行信息。然而,一个恶意的客户端能够修改这个值加入恶意内容。有四种最流行的攻击方式。
  
  攻击方式1:变量长度缓冲区注入(译者注:缓冲区溢出)
  
  当把一个大的缓冲数据传给一个变量时可能会引起应用程序运行不正常或者在执行的时候“宕”掉的安全隐患。下面的规则将保护id变量免受此类攻击:
  
  <Location /axis/getBalance.jws>
  SecFilterInheritance Off
  SecFilterDefaultAction "deny,log,status:500"
  SecFilterScanPOST On
  SecFilterCheckURLEncoding On
  SecFilterCheckUnicodeEncoding On
  SecFilterSelective POST_PAYLOAD "<\s*id[^>]*>" chain
  SecFilterSelective POST_PAYLOAD "<\s*id[^>]*>.{6,}</\s*id\s*>""deny,status:500"</Location>
  
  在上面的指令中,正则表达式<\s*id[^>]*>.{6,}</\s*id\s*>限制缓冲变量的长度为5个字符。为了检查上面的代码块是否起作用,Blue银行可以发送两个请求,一个请求符合约束,另一个越界。
  
  POST /axis/getBalance.jws HTTP/1.0Content-Type: text/xml; charset=utf-8SOAPAction: ""Content-Length: 576EXPect: 100-continueHost: www.bluebank.example.com<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"xmlns:tns="http://www.bluebank.example.com/axis/getBalance.jws" xmlns:types="http://www.bluebank.example.com/axis/getBalance.jws/encodedTypes"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Bodysoap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <q1:getInput xmlns:q1="http://DefaultNamespace">
  <id xsi:type="xsd:string">12123</id>
  </q1:getInput>
  </soap:Body></soap:Envelope>...HTTP/1.1 200 OKDate: Mon, 03 Jan 2005 19:24:10 GMTServer: Apache/2.0.50 (Unix) mod_ssl/2.0.50 OpenSSL/0.9.7d mod_jk2/2.0.4Set-Cookie: JSESSIONID=69C6540CC427A8B064C0795ADDFC20EA; Path=/axisContent-Type: text/xml;charset=utf-8Connection: close<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"        xmlns:xsd="http://www.w3.org/2001/XMLSchema"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
  <ns1:getInputResponsesoapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  xmlns:ns1="http://DefaultNamespace">
  <ns1:getInputReturnxsi:type="xsd:string">$2500</ns1:getInputReturn>
  </ns1:getInputResponse>
  </soapenv:Body></soapenv:Envelope>
  
  在上面的例子中,将一个包含5个字符的缓冲数据传给web服务,服务收到后发回一个响应值为$2500。下面的例子将更改12123这个数据为121234,新的数据有6个字符,将得到一个新的响应信息,如下:
  
  POST /axis/getBlalance.jws HTTP/1.0Content-Type: text/xml; charset=utf-8SOAPAction: ""Content-Length: 577Expect: 100-continueHost: www.bluebank.example.com<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"xmlns:tns="http://www.bluebank.example.com/axis/getBalance.jws" xmlns:types="http://www.bluebank.example.com/axis/getBalance.jws/encodedTypes"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema">    <soap:Bodysoap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <q1:getInput xmlns:q1="http://DefaultNamespace">
  <id xsi:type="xsd:string">121234</id>
  </q1:getInput>
  </soap:Body></soap:Envelope>...HTTP/1.1 500 Internal Server ErrorDate: Mon, 03 Jan 2005 22:00:33 GMTServer: Apache/2.0.50 (Unix) mod_ssl/2.0.50 OpenSSL/0.9.7d mod_jk2/2.0.4Content-Length: 657Connection: closeContent-Type: text/Html; charset=iso-8859-1<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><head>  <title>500 Internal Server Error</title> </head><body> <h1>Internal Server Error</h1> <p>The server encountered an internal error or misconfiguration and was unable to complete your request.</p> <p>Please contact the server administrator, you@example.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.</p>
  <p>More information about this error may be available in the servererror log.</p> <hr />
  <address>Apache/2.0.50 (Unix) mod_ssl/2.0.50 OpenSSL/0.9.7dmod_jk2/2.0.4 Server at 192.168.7.50 Port 80</address></body></html>
  
  mod_security模块拒绝了该请求。返回500状态。这说明请求根本没有到达web服务层。Blue 银行成功地防范了最常见和经常被忽略的缓冲区溢出攻击。(译者注:HTTP定义的500状态是服务器执行错误)
  
  第二种攻击:元字符注入
  
  另外一个主要的针对输入变量的威胁来自于使用像%,单引号(’),双引号(”)。这些字符会导致SQL注入攻击,并且可能会导致不必要的信息泄漏。采用下面的策略将保护web服务防范此类攻击。
  
  <Location /axis/getBalance.jws>
  SecFilterInherita
上一篇:让POI架起Java与Office之间的桥梁三 人气:463
下一篇:让POI架起Java与Office之间的桥梁一 人气:817
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-9-4 LPLY CMS 网站管理系统 v5.0
2008-9-4 缤纷互动视频交友 v3.01.902
2008-9-4 ADN视频收藏专家 v3.0 bulid 080
2008-9-4 天空网络电影系统SKYUC v2.5.6 简
2008-9-4 Web Wiz Rich Text Editor(文本编
2008-9-4 幻影动漫网视频系统(Ppdong) v1.
2008-9-4 乐维电脑在线DIY配置系统
2008-9-4 老樊文章管理系统SQL版
2008-9-4 ASP.NET 2.53 缩略图水印组件源码
2008-8-23 Mini WinMount V0.4
2008-8-23 Vista优化大师3.11正式版
2008-8-23 Wine 1.13
2008-8-23 KlipFolio 5.0 Build 5899-80
2008-8-23 Windows Sysinternals Desktops
2008-8-23 OneTap Movies1.2破解版
2008-8-23 AnnotaterPDF阅读1.1.503 破解版
2008-8-23 SoundMeter分贝测量仪 v1.0汉化破
2008-8-23 iDrum音乐节拍1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵