Java开发必知的web安全常识

一个观点:仅仅只会Java语言开发已经远远达不到企业的招聘需求。虽然还不至于要求你面面精通,正经的全栈full-stack开发,但是要广泛涉猎,知识面宽泛。
本文即是对于web开发过程中,涉及安全,证书,加密,密钥,混淆……等概念。
目录

  • 安全
    • 定义
  • 攻击
    • 攻击分类
    • 常见的Web攻击
      • SQL注入攻击
      • XSS攻击
      • CSRF攻击
      • 传输劫持
      • 文件上传漏洞
      • 访问控制
      • DDOS攻击
      • SYN攻击
      • 身份token窃取
      • 账密泄露
      • 暴力破解
  • 防御
    • 编码
      • Base64
      • MD5
      • SHA1
      • Blowfish
      • MAC
    • 加密
      • DES对称加密
      • AES对称加密
      • 双向RSA加密
    • HTTPS
    • URL签名
    • 双因子认证
  • 证书
    • SSL
    • 证书标准
    • 编码格式
    • 常见扩展名
    • 证书编码转换
    • 获得证书
  • 混淆
    • yguard
    • ProGuard
    • 选择
  • 参考

安全

这个词汇太大,也完全没有必要搞纠结于概念的定义,知道即可。

定义

国际标准化委员会的定义是"为数据处理系统和采取的技术的和管理的安全保护,保护计算机硬件、软件、数据不因偶然的或恶意的原因而遭到破坏、更改、显露。"
中国公安部计算机管理监察司的定义是"计算机安全是指计算机资产安全,即计算机信息系统资源和信息资源不受自然和人为有害因素的威胁和危害。"

攻击

攻击分类

常见的Web攻击

SQL注入攻击

定义
攻击者在HTTP请求中注入恶意的SQL代码,服务器使用参数构建数据库SQL命令时,恶意SQL被一起构造,并在数据库中执行。

实例
如String query = “SELECT * FROM accounts WHERE custID=’” + request.getParameter(“id”) + “’”; 如果参数id中是 ;delete from user; 或者 or 1=1 这样,就会返回所有数据

防范
不用拼接SQL字符串。
使用预编译的PrepareStatement。
服务端还有效性检验。(外部都是不可信的,防止攻击者绕过Web端请求)
过滤SQL需要的参数中的特殊字符。比如单引号、双引号。
对 sql 中 in 操作,使用预编译,还是仍然还是通过字符串拼接呢?

XSS攻击

定义
Cross Site Scripting,跨站点脚本攻击,指攻击者通过篡改网页,嵌入恶意脚本程序,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式。XSS 可以大概分为三类, DomXSS,反射型XSS和存储型XSS。

实例
假设页面上有一个表单
type="text" name="name"value="梁桂钊"/>
如果,用户输入的不是一个正常的字符串,而是
"/>

你可能感兴趣的:(安全)