欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    SI-安全编程规范.docx

    • 资源ID:1793662       资源大小:37.19KB        全文页数:15页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    SI-安全编程规范.docx

    安全编程规范文档状态I攵档Jtt号:S【安全於程奴范草稿已发布(修改中%热KffiIIWh保密is别:文档版本:文档控制:版本历史日期版本说明作者保密等级定义公开资料0内部资料口保密资料口机密资料1背景32现苞概述33实现目标34册范约定35安全规范31.1.1 安全编码总则31.1.2 确定WEB应用程序体系结构安全31.1.3 计安全的身份险证和会话管理机制41.1.4 制定应用程序输入验证策略71.1.5 对敏感侑息进行加密91.1.6 防止参数触收91.1.7 设计审计策略101.1.8 SqI注入诅洞101.1.9 XSS湾站脚本漏洞121.1.背景随药电力公司对信息安全的进一步加强,要求我们部署的系统必须满足安全扫描要求。本文档描述了明达公司WEB开发安全端程规范.1.2 规范概述本规范从应用开发安全管理要求出发,给出了编码安全的具体要求,供明达公司系统内部使用,适用于所有项目建设工作.本规冠明确定义了WEB开发中的编码安全相关的技术细节.1.3 实现目标通过采用安全的体系架构、设计安全的身份验证和会话管理机制、制定应用程序询入验证策略、故适信息加密、参数篡改策略、审计彼略实现用户对资源的合法访问、保障数捌的完整性、保密性,防控多数非法算改、注入攻击、信息泄露,达到系统安全检定运行目的,1.4 规范约定1/HHU1234文档中的【规范】指明达公司WEB开发安全编程规范;【示例内容】中的条目是【规则内容】中相应条目的示例解决方案;【规则内容】中的【必须】指任何系统具招且必须参照强制执行的功能规范:【规则内容】中的【能膨】指任何系统应当具备,但是可不媪用的功能规范:1.5 安全规范3.1.1 安全编码总则1、小心、认真、细致的编程:2.程序只实现你指定的功能:3、永不要信任用户输入,对用尸怆入数据做有效性检查:%必须考虑总外情况并进行处理;5、不要试图在发现错误之后继续执行;6,使用安全函数进行编程:7、所有函数加入错误处埋,旦展示页面不允许暴露错误详细信息.3.1.2 承定WEB应用程序体系结构安全【规则目的】实现项目开发的根基安全.【规则内容】1) 项目必须采用公司分发的程序架构进行项目开发:2) 项目应采用发高且检定的程序架构及开发工具进行软件开发;3) NET新项目采用VS2010开发工具,.NET4Q框架4) F1.EX新项目采用AdobeF1.ashBui1.der5.0开发工具5) JAVA新项目采用公司架构6) 其他语言参照语言规范执行【示例内容】无【补充说明】1) 开发工具及框架请参考具体语古编码规范执行:2) 架构打全安全补丁:3) 1.3设计安全的身份验证和会话管理机制【规则目的】实现用户身份的有效鉴别、安全访问及资源的有效控制。【规则内容】1)系统应能够强制用户在初始登录时修改分发的初始口令:2)系统能够修改用户诙码;3)系统应能的对用户口令的长度、复杂度、最长使刖时间、历史曳狂次数M性进行限制.并对已经过期的口令进行提示更改:4)系统应能够对用户连续鉴别失败(口令拙误)的行为进行检测,禁止其第续尝试赞录;5)系统应能好根据用户的访问时间、客户端地址园性进行登录系统限制;6)系统超级管理员、系统管埋员、安全审计管理员不应具有业务系统权限:7)系统应能好实现会话超时中断功能,会话超时时自动返回登录窗口:8)系统应能够限制单个用户的多重并发,能够实现一个用户只允许同时在个客户端上登录到系统中:(实现方法有待商椎,可初媛实现9)系统应能够对地大并发会话连接效迸行限制:10) 系统必须在所有页面中加入SeSSion判断功能,防止越权访问:【示例内容】1) 在user表中加入登录次数记录字段判断是否首次登录.<t_sys_user表中加入i1.ginCount数字型)。表示首次登录,登录完成后置1.2)加入修改依码功能:权限管理:1)用户密码历史表:-Createtab1.eCreatetab1.e1.SYS_USERS_PDHIS(spdhis-idVarChar2(32),s1.ogin_idvarchar2(32),spasswordvarchar2(32)rddatedate-Addcommentstotheco1.umnscommentonco1.umnT_SYS_USERS_PDHIS.spdhi$JdS,D'commentonCo1.UmnT_SYS_USERS_PDHIS.s1.cinJdis'登录名称';commentonco1.umnT_SYS_USERS_PDHIS.spasswordis'登录密码';commentonCO1.UmnT_SYS_USER$_PDH1.S.ddate密码修改日期,;在公共编码我中设置1.SyS-XICS表增加记录如下:1 密码长度62 密码复杂度强3 诙码有效期204 密码历史不重笈次数55 密码失败允许次数56 密码领定时间33)密码最后修改时间在t_sys_u$ers衣中增加d1.astUpdatePass日期里,密码最后修改时间应用系统及权限管理均增加客户地密码长度验证、复杂度、历史密码存储:4)系统记录失败次数和锁定时间:在t_sys_users表中增加I1.oginFaiICount数字刎。(失败计数),增加!1.oginFai1.TIme时间里。应用系统登录成功后及时清除失败计数。5)解决方案:(1) 用户访问时间:字段有:有效起始11期,失效11期工作时段:周几至周几时间段:时到时(2) 是否IPHy止绑定属性用户表(tsgUSers增加如卜字段:iBeginWeek数字型从周几iEndWeek数字型到周几iBeginHour数字型从时IEndHour数字型到几时S1.sBandIP字符型('',是,否)是否绑定IP(3)在登录系统时进行相应判断6)超缎管理员不应具有业务权限,且管理员间用户不能为同一用户.7) 当SeSSiOn超时后,自动返回登录宿口;8)登录时,根据在城用户进行相应判断,限制单个用户的多重并发(实现方法有待商椎,可哲级实现力9)对在线用户数进行登记,并判断用户在线故盘是否超过阀伯:10)可通过建立基类负面.总体判断SeSSion权限及过期:【补充说明】T_$YS_USERS增加字段:i1.o<3ncountnumberY登录次数(是否首次)D1.astupdatepassdatey最后修改密码时间I1.OG1.NFAt1.COUNTNUMBERY登录失败计数I1.ocinfai1.timedateY笠录失败时间Ibeginweeknumbery开始周IENDWEEKNUMBERY结束周IBEGINHOURNUMBERY开始时间IENDHOURNUMBERY结束时间SISBANDIPVARCHAR2(4)YT_SYS_XTSZ增加记录是否启用IP绑定1 密码长度62 密码熨杂度强3 密码有效期204 密眄历史不理更次数5S密码失败允许次数S6密码锁定时间37朵大并发数埴1.0增加密码历史记录表(修改密码小证用)Createtab1.ecreatetab1.eT-,SYS-SERS.PDHISspdhisjdVarChar2(32),s1.ogin-idvarchar2(32),SpasswordVarChar2(32),ddatedate-Addcommentstotheco1.umnscommentonco1.umnT_SYS_USERS_PDHIS.spdhisJdisW;commentonco1.umnT,SYS-USERSPDHIS.s1.ogi-,1.dis登录名价;commentonco1.umnT_SYS_USERS_PDHIS.spasswordis'登录密码;commentonco1.umnT_SYS_USERS_PDHIS.ddate»$'密码修改日期';一3.1.4 制定应用程序输入验证策略【规则目的】实现数据的完整性、有效性,防止注入攻击:实现数据输出的合法性,防止跨站脚本攻击。【规则内容】1)不要相信用户的任何输入,必须对用户输入内容全部i三行有效过浊,对于含有可能帝来危险的字符进行过港.字符包括:|&;$%'"<>O+1.FCF,-.空格.or,and,.script,document,eva1.,request进行过激对于.NET必须对VieWState进行加密处理.方法见【示例内容】:2)禁止网页传输SQ1.语句、连接字符串等与数据库相关内容:3)系统必须对上传下载的文件类型诳行验证,防控上传下我任点类型的文件:4)系统所有打印输出内容,采用使编码输出.ESAPI.encoder().encodeForHTM1.(deanComment);即告诉浏览器作为数据输出而不是Htm1.元数据输出。【示例内容】D编写必要的通用函数.对输入字符率进行过谑:对于提交的数字型、H期里可单独后代验证:对于多文本框可根据需要更改通用函数以进行必要过泄:预防类似:StringSq1.="se1.ectfromuserswhereUSemarne='"+Iogin1.ext+"'"IogIn.Text="'1or1=1”类似的SQ1.注入攻击。对于.net可参考如下示例代码,java等沿古可参照执行:在页面中加入如下函数.可实现全面的安全验证:/<summary>/对于含有可能带来危险的字符进行过滤.字符包括:S%<g><2<><)+1.FCF,-zor,andcript,document,eva1.requestt行过沌,/对于有特殊含义的分隔符用户自行编写程序过注/<summary>HI<paramname="objStr"><param>III<returns><returns>pub1.icstringgetSafeStr1.ng(objectobjStr)(strings三stri11g.Empty;if(objStr«»nu1.1.)return'm;e1.se(s=Convert-TbString(ObjStr);S=S-RepIaceCI',*").Rep1.ace("&e,"").Rep1.ace(;","").Rep1.ace("S"z"");s=s.Rep1.ace("%'"'J.Rep1.aceC'©","').Rep1.ace("'"r"").Rep1.ace(""","");s>s.Rep1.ace("<","").Rep1.ace(">"r"").Rep1.ace("(","').Rep1.ace(")","');s=s.Rep1.ace("+","").Rep1.ace("V".',").Repace("n",'"').Rep1.ace(",'"");s=s.Rep1.ace("."f"*).Rep1.ace("script",").Rep1.ace("docume11t","").Rep1.ace(eva1.",");s=s.Rep1.ace("request"."").Rep1.ace("","").Rep1.ace("-","");)returns;)应用此函数过游即可:Strings=getSafeString(TextBox1.Text);viewstate加密处理,在配置文件中加入:<system.web><pagesenab1.eViewStateMac="true"/><machineKeyVa1.idationKey="AutoGeneratejsoIateApps”decrYptionKey=HAutoGenerateJso1.ateApp$Mva1.idation=',3DES">在北置文件中加入下面内容,即可实现页面内容的自动缝证,加入的证后需要测试所有页面,是否正常<configuration><system.web><pagesva1.idoteRequestntrue,><system.web><configuration>2)为了数据的保密性,禁止传输SQI语句:3)对上传卜戢的文件类型.文件大小进行浮格过泄,防止上传任意类型文件而遭受北法上传可执行文件,下我任意文件:4)所有打印输出必须采用编码箱出,编码包括【补充说明】X1F.NET不允许Viewstate存储红杂对象如dataview:3.1.5 对敏感信息进行加密【观W1.目的】实现关键数据的保密性传输,防止注入攻击和密码截获.【规则内容】1)必须对用户名称进行严格过谑;2)必须对用户密码信息进行MDS加密传输:3)对于特殊参数信息进行强加密处理如RSA、DES.禁用Base64加密方式:【示例内容】1)可通过过滤特殊字符方式,防止注入攻击;2)可通过密码U时间敬.MD5加密传输方式防止密码搬获;3)使用公司通用类库中通用加解密算法:【补充说明】密码MDS加密为强制执行;时间戳由于客户端和服务器端存在时间龙,各项目纲可例据实际情况制定时间微格式如年月日,或者去除时间微3.1.6 防止参数套改【规则目的】实现关键数据的有效验证,防止注入攻击.湾站脚本攻击.【规则内容】对于页面中非用户参与的参数数据,包括页面间传递的参数、圈藏在页面中的记忆类变量或常量参数必须进行有效性验证,防止非法墓改而造成攻击.【示例内容】1)页面间传递包括“?”后面参数部分,刻于数字变。应用数字方法进行验证,字符变属应进行加密+UrIEncode方式传输,防止传输伯息直接M询或改:杜绝如;?user=<script>a1.ert()<script>.一站脚本攻击。2)时于页面总藏中文内容变址迸行黑密处理:3)对于页面中只读文本框中的变量耍诳行权限及彳!效验证,防止越权操作,如审核人审核时间信息.防止非法更改提交.【补充说明】3.1.7 设计由计策略【规则目的】通过系统操作口忐的审计,实现安全问题可追溯的目的,【规则内容】1)必须加入用户量录、轻用时间11忐;2所有页面主要信息的增剧改必须加入日志,日志内容包括授作人、时间、操作、操作内容:【示例内容】可通过通用11忐记录函数实现1志的自动记录.【祚充说明】无3.1.8Sq1.注入漏洞【规则目的】防止数据库Sq1.注入攻击,例如用户登录处、不用登录可以查看到的数据库中的数业:列入尤为也要.例:,个验证用户登陆的页面,如果使用的SQI语句为:Se1.ectfromtab1.eAwhereusername="+username+''andpassword.Sq1.输入or1.=1.一一就可以不怆入任何password进行攻击:【规则内容】必须添加过谑器或拦嵌器,将传入的Sq1.关键字进行过港.使入侵者传入的参数不能作为命令执行。【示例内容】添加过池器,进行Sq1.危险关键字过泄pub1.icc1.assSq1.InjectFi1.terimp1.ementsFi1.ter初始化号”危险关键字,字符率privatestaticStringinj=nu1.1.;/应危险关键字,数祖privatestaticStringHsq1.1.nj-nu1.1.;/sqi注入后跳入页面,此处读取配置文件privatestaticStringSqIPage=nu1.1.;pub1.icSq1.InjectFi1.ter()pub1.icvoiddestroy()* <>Titie:doFi1.ter<>* <p>Description:执行过泄器,进行应危险关键字判断<p>* 8paramrequest* 0paramresponse* paramchain* 8throwsIOExceptionZthrowsServ1.etException* seejava×serv1.et.Fi1.terdoFi1.ter(java×.serv1.et.Serv1.etRequestrjavax.serv1.et.Serv1.etResponsezjavax.serv1.et.Fi1.terChain)* /pub1.icvoiddoFi1.ter(Serv1.etRequestrequest,Serv1.etResponseresponse,Fi1.terCha1.nchainthrowsIOException,Serv1.etException(HttpServ1.etRequesthttpSeEv1.etRequest=(HttpServ1.etRequest)request;1.terator<String>va1.ues-httpServ1.etReguestgetParameterMap().va1.ues),iterator);boo1.eanIsSq1.Inj-fa1.se;whi1.e(va1.ues.hasNe×t<)(String(va1.ue-va1.ues.next();for(Stringparam:va1.ue)(isSq1.1.nj=sq1.-inj(param);if(13Sq1.Inj>/转向四U主人提示页面RequestDispatcherrd=request.getRequestDispatcher(sq1.Page;rd.forward(requestrresponse);chain.doFi1.ter(request,response);*<p>it1.e:init<p>* <p>Description:初始化SqI关键字<p>* SparamfConfigfi1.ter留置* throwsServ1.etException* Sseejavax.serv1.et.Fi1.ter1.initjavax.serv1.et.Fi1.terConfig)* /pub1.icvoidinit(Fi1.terConfigfConfig)throwsServ1.etExceptionSq1.InjectFi1.ter.inj-”IandIexecIs1.eep11nsertIse1.ectIde1.eteIupdateIcountI*I%IchrImidImaster11runcateIcharIdec1.areI;Ior1.-1.+IzIr;Sq1.InjectFi1.ter.sq1.Inj=inj.sp1.it(,);sq1.Page-fConfig.getInitParameter(Msq1.InjPageH>* Description:判断参数是否有关乎应注入的关键字* Qauthorfhp* 6paramparam用户输入的参数* QretUrnboo1.eanprivateboo1.eansq1._inj(Stringparam)for(Stringitr:sqi1.njStringIowerParam-param.to1.owerCase();if(param.contains(,”+itr”returntrue;if(IowerParam.Conta1.nsC,”+itr÷,r)returntrue;)returnfa1.se;【补充说明】无3.1.9XSS跨站脚本漏洞【规则目的】防止用户提交变贷中含为javascript、active等恶意脚本攻击【规则内容】添加过漉零,进行脚本、Mm1.等的过溺【示例内容】添加过池器,时所有参数进行过泄,处理方案:1 .含有Mm1.标签做转义.2 .含有故适的htm1.脚本,直接处理掉.pub1.icc1.assXSSFi1.terimp1.ementsFi1.ter(privatestaticM<ap<StringrStrng>=nowHashMap<String/Stri11g>O;* Defau1.tconstructor./pub1.icXSSFi1.terCI/TODOAuto-generatedconstructorstubJ,Qsq。Fi1.terIdoFiIterIServ1.etReqvest.Serv1.etResponse/Fi1.terChain)pub1.icvoiddoFi1.tet(Serv1.etRequestrequest,Serv1.etResponseresponse,Fi1.terChainchainthrowsIOException,Srv1.etException(HttpServ1.etRequesthttpRq=(HttpServ1.etRequestIrequest;IitipRequestWcapperwrapper-newHttpRequestNrapper(httpReq,×ssMa);chain.doFi1.ter(wrapperzresponseI;) 本过Ii/pub1.icvoidInit(Fi1.terConfigfConfi9>throwsServ1.ecException(/含/scriptx55Map.putC(三S)(cC(rR)(iHpP1.tT'fm三cript">×55Map.pt<-(s1.S)c1.CrR(i11p1.F(tT),r含有6P293sMap.put(wsS(P!Pa:AcC!eE-zspacew);f1.XSShiap-Put<-3;SPIaIAcCeE,”.);H含有工ty1.cx8sHap.puc(-8S)(t!T)(yiY)(II1.)(eE-zsty1eM);xssJap.puc<-(a5);tT)Iy1.Y(1.1.1.1.Ie1.E1.,-);/含小b9cr(匕5Map,putC(vV)(b1.B)(S1.S)(C1.C)IrIR(i1.1.p1.Pt1.,r*vb5cripf1.;X83bjap.put<(vvjIbIBJIe1.SHcICHrIR1.ti1.1.)IpIPJ(t)wrw"J;/含有JaYaSCCt.,(ms1.*1.j1.a1.A5S(c1.C(r1.R)(i1.I)(p1.P)(t!T):.fc)W",JwJavaScriptw);/含有函数受辿xssMap.put(weE)v'VJaIA11.W(.)w,Meva1.w);×ssMa.utr(eiEIv1.V1.aIAJ111.W<(.W),r");×三sMap.put<<m,;/xS5top-put<>w.M4gt;H1.;x8sMap.puc<<-tm<h);×sMa.ue<,>,m>m);xs5ftp.pt(-$/arp;-);xssHa.put(wv-zw>xsSMaP.puj'”,-);×sMap.ut<.-;xs5p.ptC,<,½m(mI;xssHap.put(wW)-,mImI;x3sMdp.ut(n-rw*×27;-);xsrMp.put(""rw4quot;");XSSApPUtr"1.,>xssHa.puc(-(W1.w)(A>n)(RirJ(NIn)"z"wantnH);x.Map.put(mIE1.e1.RtjRr0oRr,tr-error");:p.put(M(D|d|Ee)Bb)Uu)(6g)w,"debug");x5W<»p.put(mAo)1.i1.B1.e)(R1.r)(Tt)"rwa1ert);xsWap.pt(,O1.oN1.n1.(EIe)(RIr)(RIr)(O1.o)RIr",Pnernorw>)【补充说明】无

    注意事项

    本文(SI-安全编程规范.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开