java开发常见漏洞及处理说明_第1页
java开发常见漏洞及处理说明_第2页
java开发常见漏洞及处理说明_第3页
java开发常见漏洞及处理说明_第4页
java开发常见漏洞及处理说明_第5页
已阅读5页,还剩4页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java常见漏洞及处理说明杨博本文专门介绍针对java web程序常见高危安全漏洞(如:SQL 注入、XSS跨站脚本攻击、文件上传)的过滤和拦截处理,确保 系统能够安全的运行。一.SQL注入(SQL Injection )经分析确认本系统对SQL注入做了相应的过滤处理,可以有效应对SQLS入攻击,确保系统安全。详细说明:攻击方式:所谓SQL注入式攻击,就是的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。防御方式:对用户输入或请求进行预验证处理,过滤掉可能造成恶意SQL的字符。本系统届丁政府部门门户网站,用户发布的是新闻动态,不会涉及到学术研 究SQL方面的东西,所以本系统采用过

2、滤器的方式对用户输入或请求进行过滤 处理,如果输入或请求涉及恶意 SQL方面的字符将一律过滤掉,这不会影响用 户的使用,同时确保了系统的安全。系统配置文件web.xml初始化时同时初始化过滤器,过滤器起到全局作用,并 设置为针对所有请求。"防止5QL注入的过滤器针对所有请求qllnj ection<,- f ilter-naire> /isrl-p atte rn><fi.lter-clc:5s>com* jeecns.ccnunon.webf 11 wer-clas3>过滤器<f ilt'<url-</filter-ma

3、pping>过滤器 AntiSqlInjectionfilter:public class AntiSqlInjec11 onfiIter implemeiits Filter public void destroy()/ TODO Auto-gene rat e d methcd stubpublic void init (FilterCorifig argO> throws ServletException / TODO Auco-generaed method stub public void doFilcex(ServlexRequestServleEResponse ar

4、glFilterChain chain) throws lOException jr Servlet Except i on HttpServletRequest req = (HttpServletRequestJj argaO;H e tp S e r vler Re sp on s e res (HctpServlecResponse) argsl;/获得所有请求参数名Enumeration params = req.getParameterNaines ();Spring sql ws;while; (params-.hasMoreEleiEenrs ( ) (/得到参数名String

5、 name . paranis *nexi:Et 0 *coString ();/ Sys tern . out print. In (" n am 巴=rr + name +/ 数对应值String value = req.getParaineterValues (name);for (int 1 = Q; i < value.Length; i+) jql - sql + value1;)/ f Syscsir.*out«println("«-«-SQL"+31 ;/有鑫义关键字,跳转到error.htmlif (rglVf

6、lXX-date(3ql)(throw gw TQExRptERL您发送洁求中的磐数中含有非法宇符惭”/ String 嫁工号日?岩中RciwituAndT m j else Cchain,doFiLter(argsDP argsl:“效睑prc>t&c!t.ed a-tatia boolean salVa.Llilai:e 1 Slclctg atr) scr = 3C£. caLwerCaae O; / 缆一转为小写h&diSc-r 耳 | execute j insert | 3elece- j d«lete|updAt虐 j eaum | dr

7、op | * | % | cht laid |ter|rr皿亡白E-e| "+ "char I dclare | si tenanue | ae t LL9e± | Mp_-=in-L5h.ell | j | or I - I +1, I Ixke " | and | exe c | exemat e | insert | create | zlrcp | r,+ 11 table| £rotE.| grant | use | grcup_cc!n.cat |CDLiaTin_-am.e J n+ *mfonT-atlosichemji -cc

8、L'jmns | table_3ch.enia.|UEiian where |.select | delete | update |ardsz |hy | EOLLnt. | * | H+ *chr |nu.d | m jeer | trumca te | char | deci are | or | ; | - | +| t | like |/| / 11; | * j/ 过滤掉的珥【生雄字 * 可以手功;拳加 String ) badSr: - badStr. jsplit | H J ;f-er int 1 * Oj 1 < bddStM-L辱ngxhji i+*J Cif

9、 Jtr rindexOt b«-dStr-3 1) | k 时 treWm tmejre torn f ailees二.XS必击(DOM XSS Stored XSS、Reflected XSS )经确认本系统已对XSE击做了拦截及过滤处理,达到了有效对抗XSSt击的效 果,确保系统的安全。详细说明:攻击方式:XSS乂称CSS全称Cross SiteScript ,跨站脚本攻击,是 We砒序中常见的漏洞,XSS届丁被动式且用丁客户端的攻击方式,所以容易被忽略其危害性。其原理是攻击者向有 XSS漏洞的网站中输入(传入)恶意的HTML弋码,当 其它用户浏览该网站时,这段HTMIK码会自

10、动执行,从而达到攻击的目的。如, 盗取用户Cookie、破坏页面结构、重定向到其它网站等。防御方式:需要对用户的输入进行处理,只允许输入合法的值,其它值一概过滤 掉。本系统提供了专门的针对 XSS攻击的过滤器,过滤掉了 html/javaScript 中的标签符号,防止恶意 HTML弋码。系统配置文件web.xml初始化时同时初始化过滤器,过滤器起到全局作用, 并设置为针对所有请求。< ! 一防止XSS攻击的过滤器一<f Ller-iLaiY.e>Xs3Filter</ f ilter-nair.e><f ilter-class>com. jeecms

11、 coiriLon . web XssFilter</ filter-clas5> <imc-paran><peram-narr.e>exc 1 udeUrls</parair-narcs>、ar am- i.TiL,1is>/menijDer/contr ifcueo car iri'./alue></ini t-par aift>F严*过虑器<p ar amnair.e>Spx11 cnslt< ; par airnair.e><parain*vaiue></par a

12、ir-vai</±mt-p ar aio<init-param>aiE-rLiir.e>FilterChar< / r ar 5jr.-nair.><param-value>,e"#: % x/par am-value ></ini't-paran<inic-parain><pararr-ninr.e>ReplaceCar</parair.-nanr.e>car znr.-va</init-paran>iLter-iiLapping><fliter

13、*name>XssFilter</filter-iume><url-pattern>*. jspxc/url-patten</filter-iLapping><f ilter-mapping>针对所有请求<filter-name>X3iparfter</±ilter-nanie><url-pat.tem>*'. do</Lir 1-patt ern></f ilter-itapping>点击进入过滤器类XssFilteriHport jr io, iOExe4i&

14、gt;t-icin ;nj aaplvitant-B: Filter Iprivate private private: privBit-eSe ringStringSETlng-StringCilrerCbazj! rcFlaGeCb4r; jplirChair CKGl'jdeUrls;FilcerConfiq1 fl IrerCanfig pobit a void iiut (TiltecCoDf xg f iLterCcufiigF tBircrsTB 5trvlet-£xMFtJ.an 4 thti.f IIecEOiAi:"£llX£

15、rCcinfL.gi“qexInlrFe*心|*ELLcitxZh&xn);tbiSi repia«Oiar"£ilTerContlb>uetimtfarirr.ez;er |ReplacE*ZJl.a.r"J: tht a . apllEC2Mi!-"C£li:«TCanf Lg.trAnfjtT.AZ- |*Spl icOi.*.xn *thisi BJCE'lud.4!U'£j.j"tii'E;erCcfDfluitretIzut;F-3E-ur.<eT;

16、er |""EKduzleurls"J athi : r fi 11< tCcn f ig - mxFC即了坷:pcibLl c void de-arzay Y 4 tLt.fllHrCaneig hidllJpabLic void die Filter SterTle-Recjuesi: t己年1 虎 jar. SerTle-ReispDi-ae zejpazije,.nicerZKalJi cJuulnF thram IDE»cepi:ioiir SezvlerExcepclQD i f 1 ifffjcludcVrl (EequesC-J)

17、Cszh&in. dfiFilrer frequeue, rtsFczise» «Lse-LcJlb.111 . * Filrer | new XssEci:pSexvlei:3LcqTje3T;iara:pper 4 4匚 tpSe svleriiequeac: 莒已骅氏日匚 r fl IteEOiaz r repla.ceCh.a.r,. apl itOiz 卜 r reapanse) private boolean xsExcludeUrl (ServleLPlequesc requ.e5Lj boolean exclude=false;if(StringUt

18、ils iNotBlanA(excludeUris)String J eKcludeUrl=eKcludeUrls - split (splitCharJi ;i f i excludeUrl! =nnl 1 £ e xcludeUr 1 r l-ength>0 for(String url:excludeUrl)if(URLHelper getDRI(HttpServletRequest)request) startsWith(url) exclude=tme;return eKQrlude;针对HttpRequest请求pnblic class XssHttpServlet

19、RequeatKrapper extends HttpServletRequestXrapper private StringfilcerChars;private String(replaceChars;public XssHttpServletRequestWrapper(HttpServletRequest request,Strinq filterChar,Serina replaceChar,Strinq splitChar) nupcr(rcquejc);if(filterChar!filterChar.length()>0>( rxizerChara-filterCh

20、ar.split opliChar): ir(replaceChar!»null44replaceChar.length()>0)replaceChars-replaceChax.split(aplitChax);public Serina aetQueryStrlna() String value super.gecQueryScr(); if (value !- null) (vaiu« x«>Encod«(v«lu«):>return value:*多36 g cP竺ary er方法,将冬数名和轸数ffl都依x

21、ss过滤。<br/>如里需要获得原始的值,则iStlsuper .getParaxeterValuea (naae) * ParPar AmeteEValuevHet par Amec«sM«pttL/public String qetPazameter(String nase) String value « super. gecPararr«cer (xssEncode (nawe) >if (value ! null) value « xssEncode(value):>return value;public Str

22、ing getParameterValues(String name) ( Soringparameters-super. getParameterValues(name); if (parametersnull|parameters.length 0) ( return null;for (int 1 = 0; 1 < parameters.length; 1+) parameters(i = xssEncode(parametersi):return parameters;*覆mgetHMderTl法将参数名和参数值都做*半过滤。<br/>*如果需要获得原始的值'

23、则通Ctsuper .getHeaders (name) 获取cbr/> getHeaderNames也可能需要覆盖 /public Soring getHeader(String name) String value = super.gecHeader(xssEncode(name); if (value != null) value = xssEncode(value);return value;将容易引起莓所漏洞的半角字符直接替换成全角字符 * paraw s* return*/private String xssEncode(String s if = null | | 5. e

24、quals (,h H) ( re turn s;try s = UEtLDecoder, decode (sF UTF5):) catch (UnsuppartedEncadingExcepticn e) / TODO Auto-generated catch block: e*printStack:Trace ();tor int 1=0; i < fllterChars.length; 1+ i f(a,contains(filterChars1) b=b.replace(filterCharsi replaceCharsi; ,fcIreturn 3;Unnormalize In

25、put String来渡目的地文件culturemarketvlsrccomjeecmscmsactionadminassistCmsFileAct.javac lj Itu rema rketv 1 s rcco mj eec m scm sa ctionadmina ssistCnn s File Act. j a va行216216对象realpathFile经分析确认此漏洞主要是文件上传输入路径漏洞,系统已有专门针对文件上传文 件类型格式的过滤器,确保上传文件的安全,有效防止了系统受到攻击。详细说明:攻击方式:上传具有可执行性的程序代码文件,如: HTML JSP等文件对系统进 行修改或盗取用户信息。防御方式:1. 文件类型验证过滤,防止上传可执行程序文件2. 使用随机数改写文件名和文件路径,使得用户不能轻易访问自己上传的文件本系统提供了专门的过滤器,过滤掉了可执行程序文件。过滤器在系统初始化时将会被调用,系统初始化配置文件 web.xml中:<f ilter-n:apFing><f ilT.er-naj

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论