`
rplees
  • 浏览: 11500 次
  • 性别: Icon_minigender_1
  • 来自: 江西
最近访客 更多访客>>
社区版块
存档分类
最新评论

分享 安全编程法则

阅读更多
标有 (*) 的检查项目表示该项是针对相关问题的根本解决方法,应当尽最大努力去完成这些内容。 未标 (*) 的项目,表示该项并不能完全消除安全隐患,只是说通过这种方法可以避免发生安全问题。
   1. SQL注射
         1. (*) 在组合SQL语句时要使用SQL变量绑定功能
         2. (*) 如果数据库不提供变量绑定,那么需要对构成SQL的所有变量进行转义
         3. 不要将错误信息原封不动地显示在浏览器中。
         4. 为访问数据库的用户设置适当的权限。
   2. 操作系统命令行注射
         1. (*) 避免使用能启动shell命令的语言
         2. 使用的语言如果允许启动shell命令,则需要对该功能的参数种的所有变量进行检查,确保只包含合法的操作
   3. 不检查路径名参数/目录遍历
         1. (*) 不要将外部传进来的参数直接作为文件名来使用
         2. (*) 将打开文件的操作限制在固定的目录中,并禁止文件名中包含路径
         3. 为Web服务器上的文件设置正确的访问权限
         4. 检查文件名
   4. 会话管理的问题
         1. (*) 用难以推测的内容作为会话ID
         2. (*) 不要在URL中保存会话ID
         3. (*) 为https协议中使用的cookie设置secure属性
         4. (*) 登录成功后生成新的会话
         5. (*) 登录成功后,在会话ID之外再生成一个秘密信息,每次访问页面时都检查之
         6. 不使用固定值作为会话ID
         7. 将会话ID保存到Cookie中时,要设置有效期限
   5. 跨站脚本攻击(XSS)
          * 不允许输入HTML内容时的解决方法
               1. (*) 输出到页面上的所有内容都要转义
               2. (*) 输出URL时仅允许以“http://”或“https://”开头的URL
               3. (*) 不要动态生成<script>…</script>的内容
               4. (*) 不要从外部网站读入样式表
               5. 检查输入内容
          * 允许输入HTML内容时的解决方法
               1. (*) 解析输入的HTML内容,生成解析树,然后提取其中的非脚本部分
               2. 使用脚本删除输入的HTML内容中的相关字符串
          * 通用解决方法
               1. (*) 应答的HTTP头重指定Content-Type的charset属性
               2. 为避免Cookie情报泄漏,应禁止Trace方法,并对所有Cookie设置HttpOnly属性
   6. 跨站请求伪造(CSRF)
         1. (*) 所有页面都通过POST来访问,在前一页面的hidden中随机生成一个信息,提交后的页面检查该信息,正确时才予以执行
         2. (*) 执行业务之前再次要求输入密码
         3. (*) 确认Referer是否正确,只有正确时才执行
         4. 执行重要操作时,向预先设置的邮件地址中发送邮件
   7. HTTP头注射
         1. (*) 不直接输出HTTP头,而使用运行环境提供的头信息输出API
         2. (*) 无法使用API时,要禁止输入的头信息中的换行
         3. 删除所有外部输入中的换行
   8. 邮件盗用(通过某种手段使邮件发送到攻击者指定的地址)
         1. (*) 不使用外部参数作为邮件头信息
         2. 必须用外部参数设置头信息时,要删除其中的危险字符。
分享到:
评论

相关推荐

    Web2.0编程思想:16条法则

    以下是对Web 2.0编程思想16条法则的详细解读: 1. **用户生成内容 (User-Generated Content, UGC)**: 用户不再仅仅是信息的消费者,而是内容的创造者和分享者。例如,社交媒体平台允许用户发布文字、图片、视频,...

    PHP 高级编程 原版书籍 PDG 版本

    13. **PHP最佳实践**:分享一些开发过程中的经验法则,以帮助开发者遵循良好的编程习惯和设计模式。 通过阅读这本《PHP高级编程》,开发者不仅可以掌握PHP的高级特性,还能学习到如何编写高质量、可维护的代码,...

    一名JAVA程序员,将自己的编程学习之路做以总结并进行分享

    理解客户端-服务器模型、套接字编程、网络安全和性能优化等概念,将有助于你在开发分布式系统或Web应用时做出更好的决策。 综上所述,JAVA程序员的学习之路涵盖了广泛的知识点,从基础的数据结构和算法,到数据库、...

    道法自然 面向对象实践指南3_3

    《道法自然 面向对象实践...作者可能通过案例分析、代码示例和实践经验分享,帮助读者深化对面向对象编程的理解,提升编程技能。通过学习本书,开发者能够更好地设计和实现符合自然法则、高效且易于维护的软件系统。

    数值分析实验报告

    5. **数值微积分**:涉及到数值积分,如辛普森法则、梯形法则和矩形法则,以及求解偏微分方程的有限差分法。 6. **STL(标准模板库)**:在C++编程中,STL提供了一组高效的数据结构(如向量、列表、映射)和算法,...

    Java程序员+上班那点事儿

    《Java程序员+上班那点...通过阅读《Java程序员+上班那点事儿》,读者不仅可以学到扎实的Java编程技能,还能了解到职场生存法则,全面提升自己的职业素养。无论你是刚入门的新手还是有一定经验的开发者,都能从中受益。

    RSA-[removed]RSA的Java语言中的Créervotre propre运算法则

    【标题】: "RSA算法在Java中的实现——创建自己的...总的来说,理解和实现RSA加密算法对于深入学习信息安全和网络编程至关重要。通过Java或JavaScript,我们可以创建自己的加密规则,增强数据保护,确保通信的安全性。

    数据结构算法与应用--C++ 语言描述

    作为Java的一个扩展,它继承了Java的可移植性和安全性,同时也是一种高效的3D图形编程语言。由于是网络语言,Java 3D的代码可以轻松地在网络上传输,使得3D应用程序可以在不同设备上分享和执行。 Java 3D的应用范围...

    数据结构与算法分析(Java版)

    《数据结构与算法分析(Java版)》是清华大学出版社出版的一本广受好评的计算机科学教材,主要关注数据结构和算法这两个核心...同时,作者可能还会分享一些编程技巧和经验,帮助读者培养良好的编程习惯和思维模式。

    IT学生解惑真经PDF

    同时,书中可能还会分享面试技巧和职场生存法则,助力学生顺利过渡到职业生涯。 总的来说,这本书作为IT学生的导航灯,旨在提供全面而实用的信息,帮助他们在IT世界中找到自己的定位,掌握关键技能,并成功迈入这个...

    KSP-FF-RSA算法,ksp的算法,matlab源码.zip

    KSP-FF-RSA算法则是对RSA的一种扩展,它引入了密钥分发机制,允许密钥在多用户之间安全共享。这种密钥分享策略有助于抵御单点故障,即使其中一个参与者的密钥被泄露,其他用户的数据仍然可以得到保护。KSP-FF-RSA...

    面试宝典面试宝典面试宝典面试宝典面试宝典

    4. **网络知识**:TCP/IP协议栈、HTTP/HTTPS协议、Socket编程、网络安全等网络原理。 5. **数据库**:SQL查询语言、事务处理、索引优化、数据库设计范式等。 6. **软件工程**:敏捷开发、软件生命周期、版本控制(如...

    JavaGuide面试突击版(全).rar

    - 设计原则:单一职责、开闭原则、里氏替换、依赖倒置、接口隔离、迪米特法则和合成复用原则。 - 设计模式:工厂模式、单例模式、建造者模式、观察者模式、装饰者模式等23种经典设计模式的原理和实现。 3. **JVM*...

    计算机考研的各种资料收集

    3. **数据结构与算法**:数据结构如数组、链表、树、图、堆等是解决问题的关键工具,而算法则是处理这些数据的方法,包括排序、查找、图算法等。熟练掌握这些内容可以提高代码效率,对软件设计有深远影响。 4. **...

    SQL Server 2008数据库设计与实现

    这个PDF文件是我花钱买来的,现在为了挣积分,拿出来与大家分享!! 本书深入浅出地介绍了目前世界上最受欢迎的数据库管理系统之一——SQL Server。全书共分三个部分:第一部分阐释了数据库的基本概念,讲解了...

    经典题目 IBM面试题

    3. **网络知识**:TCP/IP协议栈、HTTP协议、网络安全、网络编程等内容也是常考话题。如TCP三次握手和四次挥手过程、DNS解析流程、HTTP请求方法的区别,或是设计一个简单的Socket程序等。 4. **数据库**:数据库系统...

    .NET应用程序架构设计 原则 模式与实践 源码

    2. **设计原则**:在.NET架构设计中,遵循一些核心的设计原则至关重要,如单一职责原则(SRP)、开放封闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖倒置原则(DIP)和迪米特法则(LoD)。...

    PID控制算法的C语言实现账号密码.rar

    PID(比例-积分-微分)控制算法是自动控制理论中的一个核心概念,广泛应用于工业自动化、机器人控制、...同时,也提醒了在代码分享中需要注意的安全实践。对于希望学习和应用PID控制的工程师来说,这是一个很好的起点。

    【Java面试资料】-(机构内训资料)深圳-乐信-Java高级

    - **六大设计原则**:单一职责、开闭原则、里氏替换、依赖倒置、接口隔离、迪米特法则。 - **常见设计模式**:工厂模式、单例模式、代理模式、装饰者模式、观察者模式等。 8. **Spring框架** - **IoC**:控制...

    断裂力学课程_Jupyter Notebook_Python_下载.zip

    而Python作为强大的编程语言,结合Jupyter Notebook的交互式环境,为学习和研究断裂力学提供了高效且直观的工具。本课程将深入探讨如何利用Python在Jupyter Notebook中进行断裂力学的计算与分析。 一、Jupyter ...

Global site tag (gtag.js) - Google Analytics