




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
谈程序的修改技巧,郑海山 收集整理,修改代码原则,寻找合适的代码 记录每个修改 通读源代码 修改最少 耦合度最低,寻找合适的代码,修改代码不如自己重写代码,除非时间、人力方面不允许。 修改代码之前必须先读懂对方的源代码,这花的时间可能会比自己写花的时间更多。必须在这两者之间取得平衡。 改变自身需求,使需求适应下载的代码,达到直接使用,无需修改。 比如你打算找一个实现某些功能的代码,可是找了很多代码,要不只能实现其中的某些功能,要不就是某些功能不完全符合你的要求,这时就必须改变自己最原始的想法,找一个最接近的代码。因为有时候你原先的需求就是错误的。,寻找合适的代码,代码必须架构合理,编码规范,这样的代码安全系数才比较高。 源代码作者经常更新。 源代码公布后,如果有什么安全漏洞,整个系统就暴露在cracker面前。只有源代码作者根据用户的建议不断修复Bug和增加功能,才是可信赖的系统。,寻找合适的代码,推荐网站 和 。 是网上最大的开放源代码聚合地。有大量的源代码,分类组织,便于查找。 最好的搜索引擎,基本上你可以找到任何东西,如果你使用了正确的关键字。通过搜索技巧,变换关键字。,记录每个修改,使用文本文件记录下修改,以便快速恢复 因为开始我们只是试用一个系统,或者只是试着加入一些功能,如果加入功能失败,你又不知道加入了那些东西,这时你可以全部删除你刚才的修改,把原始文件重新解压,根据文本文件的记录恢复到某个版本。或者使用cvs系统自动控制。 记录下打算增加或者修改的事情,记为todo,完成后放入done区。可以使用文本文件手动维护todolist。,记录每个修改,有了这个记录,就可以在下次推出新版本后继续修改。 每件事都有记录是一个好的习惯。 在源代码里也可加上记录,比如 /2003.12.25 modify by Haishion,禁止在下班时间发表,Begin something /2003.12.25 modify by Haishion,禁止在下班时间发表,End,通读源代码,通读代码包括通读目录下的所有文件,特别是Readme,Manual,help,guide,doc,faq这种开头的文档。很多简单的安装出错其实在手册里面都已经告诉你了。 修改别人的程序时一定要通读代码,这样才可以保证修改了不加入新的Bug,并且可以充分利用原先的代码。 有时为了增加一个新功能,你可以写了一个下午的代码,过几天后发现源代码里面其实有这个功能函数,只需调用某个函数即可。这就是没有通读源代码的结果。,通读源代码,用文本文件记录下代码的函数功能,一些值得注意的地方。 一定必须确保你知道这个软件在干什么,管理员有几个入口,有几个内置帐号需要关闭等等。,修改最少,定位修改位置,可以使用Editplus的目录全文检索功能。根据用户界面的文字做关键字。Web的用户界面文字可能不准确,可以查看web源代码或者缩小文字单位。 如果一个功能有多个修改方法,使用修改最少的那种。虽然这种可能破坏了代码的架构。,耦合度最低,增加进去的代码应该尽量跟原程序比较分离。总的原则是:源代码就像刺猬,能不碰就不碰。 把增加的代码包装成一个过程或者函数,在正确的地方调用一下即可。这样是为了代码的美观。,耦合度最低,给函数增加功能的方法: 比如一个函数void foo(int i, string s);在多处有调用,你要给foo加入一个新的功能在你自己的代码内调用,你可以。 写一个void foo_new(int i, string s, boolean b);把foo这个函数体拷贝到foo_new。在foo_new里添加代码,这样的坏处是你如果更新foo,你必须同时更新foo_new。有相同的代码散布在系统各处是编程大忌。 写一个void foo_new(int i, string s, boolean b);把foo改为调用foo_new(i, s, DEFAULT VALUE)。 不写foo_new函数,使用全程变量,blnHackIt,初始值为DEFAULT VALUE,在新调用的地方把blnHackIt设置定某个值,在foo里面加入 if blnHackIt = SOME VALUE then do something end if 选择后面2种之一。,针对下载的Asp代码的修改,修改数据库文件名 例如改为dsfs354sfubzdpIUHndsgs.mdb,使用拷贝粘贴放入数据库连接字符串。 根据zhiwei的建议,在IIS里给*.mdb影射一个字节为0的假*.dll文件。 如果是SqlServer,新建一个权限比较低的用户作为该数据库的管理员。如果这个用户被攻破,他也做不了什么。如果可以,使用Windows 身份验证而不是Sql身份验证。 如果有上载文件管理,注意过滤上载文件某些特定的后缀名,把可上载的目录设置为不能执行脚本权限。,针对下载的Asp代码的修改,查看是否有对用户的输入做过滤 如是整型就用一个自己包装的函数 int GetInt(string s) 在函数内,如果不是整形,就简单得结束脚本。 Response.Clear; Response.End; 不要告诉用户哪里出错了,因为在正常使用时不会发生这种情况。 如是字符型就用 string FilterInputSql(string s) 开始可能只过滤 ,以后发现新的漏洞可以只修改这个函数即可。 防止跨站点脚本攻击 /profile.asp?name=alert(hehe); 攻击者可能会得到使用你网站的用户的cookie信息。如果你在cookie保留用户的用户名和密码。,针对下载的Asp代码的修改,修改管理员密码,密码必须是强密码,包括大小写、数字、特殊符号。不要用头脑记密码,把密码用一个软件记录起来。 不要把系统交给没有安全意识的人去管理,不要给他们开任何有管理权限的帐号。,针对下载的Asp代码的修改,一般应保留版权信息,如果为了防止系统被cracker破坏,可以去掉版权信息,更换文字。 有时cracker掌握了某个源代码的漏洞后,会通过 来查找所有安装了这个源代码的网站并实施攻击。 有些软件的版权信息隐藏得很隐蔽,比如9sky的留言簿,放在text类型的mdb数据库字段内。你如果查找全站代码,无法找到,使用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 园艺主题酒店创新创业项目商业计划书
- 农产品期货交易咨询创新创业项目商业计划书
- 动物皮毛艺术品制作创新创业项目商业计划书
- 农产鲜品乐创新创业项目商业计划书
- 现场急救知识培训包扎课件
- 2025年教育行业数字化教材开发与多语言支持策略研究
- 2025年新能源汽车废旧电池回收利用产业链技术创新与产业竞争力研究报告
- 2025年城市轨道交通智慧运维系统在智慧城市建设中的关键作用报告
- 河南省三门峡市陕州区2022-2023学年大象版五年级上学期科学期中考试试题(含答案)
- 2026届云南省永德县第一中学化学高一第一学期期末学业质量监测模拟试题含解析
- 社区公共卫生护理考核试卷
- 现代海洋管理 知到智慧树网课答案
- 新疆维吾尔自治区五大名校2024年高考化学必刷试卷含解析
- GB/T 43680-2024生态系统评估陆地生态退化评估方法
- 应急救援基础知识
- 无人机实训室建设方案
- TGSC 006-2024 二氧化碳陆地封存工程选址指南
- 销售目标达成计划
- 食材验收标准培训课件
- 畜禽养殖知识讲座
- 高速公路收费员培训课件
评论
0/150
提交评论