zoukankan      html  css  js  c++  java
  • 做项目时需要考虑的安全性问题

    在开发一个项目的时候,大家经常会忽略项目的安全性问题,有很多的安全性问题其实就是一个意识的问题,解决起来并不复杂,但是因为这些疏忽,却可能会给我们的用户带来很大的风险。下面就列举一些在做项目的时候应该考虑的一些安全性问题。

    密码保存
    保存密码的第一准则是不能明文保存密码,之前CSDN密码泄露一事还记忆犹新。通常的做法是对密码进行不可逆加密,加密时不要使用MD5或者SHA系列的算法加密,现在对这两个算法的破解研究工作已经有了相当的进展。推荐使用bcrypt。

    CI服务器的安全性
    CI服务器和Build服务器经常是攻击者最完美的跳板,这些服务器几乎拥有你系统的所有权限(代码库,各个生产环境的访问权限等等)。请确保其安全。

    校验客户端安全证书的“指纹”
    当使用SSL时,我们需要验证安全证书的“指纹”来确认该证书是有目标网站颁发的证书,这可以有效防止“中间人攻击”漏洞。

    随机生成密码
    不要对所有账户设置同一个密码,一锅端就不好了,使用密码管理软件为每一个账户生成一个独立的密码。当前比较推荐的是1Password,期待有更好的密码管理软件诞生。

    使用安全系数更高的随机数生成类库
    要想得到真正的随机数是很困难的,尤其是要满足安全领域的随机数标准,语言自带的一般随机数生成算法很难满足需要,所以JDK还提供了SecuredRandom这样的类,Ruby中也有SecureRandom这样的模块。

    总是使用HTTPS和HSTS
    如无值得信服的理由,所有的请求都应该使用加密协议

    不要使用“安全问题”找回密码
    一个桶能装多少水是有最短的那块木板决定的,一个安全系统的安全性也是有最薄弱的环节决定的。不要让安全问题成为你的那块短木板。

    不要限制密码长度
    通过密码长度来保证安全性的时代已经结束了,让用户使用"Pass Phrases"是一个不错的主意。

    允许对密码或者密码短语使用更直观的复杂度控制
    使用更有效,直观的方法帮助用户增加密码或者密码短语的难度。而不是简单的必须有大小写,必须超过8位等这些生硬的条件。

    避免缓冲溢出
    在弱类型语言中,最常见的安全性问题就是缓冲溢出,这也是最常见的一种远程攻击方法,一般有四种防范方法: * 通过操作系统使得缓冲区不可执行,从而阻止攻击者植入攻击代码。 * 写正确的代码 * 利用编译器的边界检查来实现缓冲区的保护。 * 在程序指针失效前进行完整性检查

    避免注入攻击
    所有的用户输入必须经过验证和清理才能传递给下游,最常见的就是SQL注入攻击

    避免跨站脚本攻击
    系统需要保证用户不能在页面中嵌入未经验证的信息

    避免泄露信息给第三方
    目前很多系统倾向于泄露信息给第三方,比方说Google,Facebook,新浪微博等等。这些第三方会窃取很多用户信息。

    设置数据清理策略
    只在需要数据时才保存数据,数据生命周期结束就清理掉,贼是没办法偷你没有的东西的。

  • 相关阅读:
    sql中关于存在就不做操作的代码块
    mysql插入多条数据时间复杂度比较
    oracle in VS or效率
    如何实现分布式数据库
    angularJS操作键值对象(类似java的hashmap)填坑小结
    angularJS 如何读写缓冲
    angularJs自定义服务(实现签名和加密)
    ajax请求技术
    springboot中使用mybatis显示执行sql
    mysql快速生成truncate脚本清空数据库表记录
  • 原文地址:https://www.cnblogs.com/xiaohui123-com/p/6547001.html
Copyright © 2011-2022 走看看