1、常见安全漏洞和解决方案1.1 身份认证安全1.1.1 弱密码密码长度个字符以上密码字符必须包含大写字母、小写字母和数字,并进行密码复杂度检查强制定期更换密码1.1.2 密码存储安全密码存储必须使用单向加密单纯的md,a容易被破解,需要添加随机的盐值alt涉及支付及财产安全的需要更高的安全措施,单纯的密码加密已经不能解决问题。可以考虑手机验证码、数字证书、指纹验证。1.1.3 密码传输安全1.1.3.1 密码前端加密用户名、密码传输过程对称加密,可以使用密钥对的对称加密,前端使用公钥加密,后端使用私钥解密。前端加密示例引入脚本,rsa加密工具和m5加密工具。scrpt sr=”esocepath
2、/jsencryt/bijsencrypt.min。jstpe=”txtjaasript/siptip rc=$esourcepa/jsash-2.2/md5min。s”tpe=tet/jvascit”.。前端加密脚本,省略了提交步骤srpt. / rsa加密, va publicKey =rsubicey; ar cry = nw JEnrypt(); ecrpt。sublicKey(publicKey); / 加密 ar username = encrpt.encyp(inputn=username).val()); a pasword = encrpt。encrypt($(nputnam
3、e=pasword)。va());.。注意:前端密码加密如果还用了md5加密的,先md5加密再rsa加密。后端解密,省略了其他验证步骤hirUsrerviceImpl。vpublichiroUer getUser(Sting am, ntegerseTpe, Integer logType) nae RAUtils。deryptBase4(ame); ubicoleandoValdUer(Shiros shroUser, String passwo) passod = RSUtils.decrypBae64(sswd); 1.1.3.2 启用htps协议登录页面、支付页面等高危页面强制htts
4、协议访问。前端加密和https可以结合使用1.2 SQ注入1.2.1 描述SQL注入攻击是黑客对数据库进行攻击的常用手段之一.随着/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的 ntion,即SQ注入。1.2.2 解决办法1.养成编程习惯,检查用户输入,最大限度的限制用户输入字符集合.2.不要把没有检查的用户输入直接拼接到QL语句中,断绝SQ注入的注入点
5、。L中动态参数全部使用占位符方式传参数.正确。.itbjecpaam = new AryLstObject(); Sting sql ”elect * rm uewher loin_name like ?;parasad(serna);。正确.。Map pars =ew HashMapSring,bect(); Srig q = selct *fromuer here logi_nam like :lognae;params.put(”useame”, usrme);.错误。.。tig sl ”elect fr usrwere lin_m senae + ;.。.如果不能使用占位符的地方一定要
6、检查SL中的特殊符号和关键字,或者启用用户输入白名单,只有列表包含的输入才拼接到L中,其他的输入不可以。Sring sql =seet * from ” SqlostInjectin(blename); 1.2.3 应急解决方案ngnx 过滤规则naxsi模块axsi_nbsrues# nablelearnng moe#LearningMde;cRulesEabled;#SecesDisabd;Deniedrl ”0x。h; ceckrules hecRulSQL LOCK;ChecRule”RFI = 8 BLOCK;Checule ”TAESL = 4 BLOCK;kRle”$EDE =4
7、 BLOCK;heckRule XS=8LOCK;标红部分就是SQL注入过滤规则启用级别.基础滤规则已经级别定义省略,可自己定义。1.3 跨站点脚本攻击(SS)1.3.1 描述S(ossSe Sripti,跨站脚本漏洞),是eb应用程序在将数据输出到网页的时候存在问题,导致攻击者可以将构造的恶意数据显示在页面的漏洞。1.3.2 解决办法1 养成编程习惯,检查用户输入,最大限度的限制用户输入字符集合。2 不要把用户输入直接显示到页面,不要相信用户的输入。编码把用户输入编码后输出正确。c: va$用户输入c:ut.。错误.。.$用户输入”.富文本编辑器和直接显示编辑的HML,项目总尽量不要开放,如
8、果开放就要严格检查XS敏感HTML片段,并且严格控制用户权限,做好IP限制这些安全措施.注意:所有XS过滤器如果要保证过滤后TML能正常浏览,都只能过滤部分已知的SS攻击,开发HTM编辑始终存在风险和隐患。1.3.3 应急解决方案web过滤器we。ml.。!- 跨站点脚本过滤 参数:excludel 排除链接,不参与过滤的链接,支持an风格的通配符 参数:trit 是否严格模式,严格模式基本只要有大于小于都会拦截,宽松模式只拦截scipt这些已知的攻击脚本- fiter iernaeIllegCharterFilterfiltname com。wondersgr.ssp。amewrk.eb.f
9、iter。llegaaracterFiltr /filer-clas initparm ramnamexcludeUl/resource/,*/*。imes/pramvau initpaam pram-vluefls /initarmelChactrFlte.注意:这种方式效率低下,对应大数据提交响应很慢,不推荐。 HML编辑器会被这个过滤器拦截,需要特殊处理。nginx 过滤规则naxsi模块sinbsrules nab learning od LeaingMode;SecRulesEnbld;SecRulsDisaled;DeniedUrl ”50x。h”;#checkrules Chec
10、kRul ”$SQL = 8 BLCK;Checkule ”$RFI8 BLCK;ChRul ”TAVERSAL= 4”BLOCK;CheckRue”EVADE 4LOK;heckR $XS 8 BLOK;标红部分就是XSS注入过滤规则启用级别.基础滤规则已经级别定义省略,可自己定义。默认的规则级只要带符号的通通拦截。1.4 跨站请求伪造(SR)1.4.1 描述RF(Cross Site eque Forgery, 跨站域请求伪造)是一种网络的攻击方式,该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在并未授权的情况下执行在权限保护之下的操作,有很大的危害性。1.4
11、.2 解决办法1.验证HT Refeer 字段2.在请求地址中添加token 并验证服务器生成toke,输入界面获取ten,提交是带上toen,服务器验证ok注意!关键操作,还需要加入用户交互操作比如付款,转账这样的操作一定要用户再次输入密码(或者独立的支付密码),在加上可靠的图片验证码或者手机验证码。3.在 HTP 头中自定义属性并验证1.4.3 应急解决方案we过滤器wxl。. filte flter-nasrfl/itername filter-clas .wnderroup。wssi.frmeworweb。filter.srfFiter/iltr-cs iit-param param-
12、namxludeUr paamvalue/esouce*,/*/*imgsparavalue/itpa nitparam reerUrlara-ame paamaluetp:/127.0.1:9080*/,https:27。0。0。1:44/*paramvleint-a /filtr filteappingilternaeCilter/ilr-am ul-per/filtrmapn.注意:修改允许的refeer白名单rferrU。1.5 X-FameOpi未配置1.5.1 解决办法1.5.1.1 apche ht.conf。et X-rm-pionsIfode dedesc Heade alw
13、y aend XFrameOptions SAMEORIGI/IfMdue。.注意:apae默认就配置了1.5.1.2 nginx nginx。onf。.addheaderXFame-tonsSAMIIN;。可以加在location.。oation / add_header X-Fram-pios SAMEORIGIN;。1.6 服务器启用了TRACE方法1.6.1 解决办法1.6.1.1 ache .0.55版本以后http。cnf。Tracenable of.。.0.5版本以前htp。cof。.LadMode reite_mul moduls/mo_ewrie。so。在各虚拟主机的配置文件
14、里添加如下语句:。.RwritEnne On RewriteCond REQUETETHO (TAETC)RwiteRule.*-.1.6.1.2 gixnginx.cof.。. #限制访问的方法 if ($rqut_mehod ! (GT|HEPOST)$) retur40;。.可以加在serer.svr .。 i ($reuest_method ! (G|EA|POST)) retrn 403;。.。1.7 隐藏服务器版本号1.7.1 解决办法1.7.1.1 pache ttpcon 或者httpdefaul。con。Srrokens Pod。.1.7.1.2 ngnx nginx。conf.sever_toens off;。.可以加在tp.。http。ervertos ff;。.。.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1