XSS攻击和SQL注入攻击是网站应用攻击中最重要的两种手段,还有CSRF,Session劫持

网站攻击和防御

XSS攻击

跨站点脚本攻击(Cross site Script),通过篡改网页,注入恶意HTML脚本,在用户浏览网页时候,控制用户浏览器进行恶意操作。

  • 反射式,点击恶意URL,恶意脚本会执行
  • 持久性XSS攻击,黑客提交含有恶意脚本的请求,保存在被攻击的web站点的数据库中,用户浏览网页的时候,恶意脚本被包含在正常页面中,达到攻击的目的。

预防手段:

  • 消毒:对某些HTML危险字符转义,< 转义为 &gt,消毒是所有网站最必备的XSS防攻击手段
  • HTTPOnly:禁止页面js访问带有httponly属性的cookie,防止xss攻击者窃取cookie,所以对于cookie可以添加httponly属性,避免被攻击脚本窃取

注入攻击

SQL注入攻击和OS注入攻击

SQL注入在HTTP请求中注入恶意SQL命令,服务器用请求参数构造数据库SQL命令时候,恶意SQL被一起构造,并在数据库中执行。

获取数据库表结构信息:

  • 开源
  • 错误回显
  • 盲注:攻击者根据页面变化判断SQL语句的执行情况,猜测数据库表结构

防御SQL注入攻击首先要避免被攻击者猜测到表名等数据库表结构信息。

预防:

  • 消毒:请求参数消毒,通过正则,过滤请求数据中可能注入的SQL
  • 参数绑定:使用预编译手段,绑定参数是最好的防SQL注入的方法,数据访问框架,通过SQL预编译和参数绑定,攻击者的恶意SQL会被当成SQL参数,而不是SQL命令被执行。

CSRF攻击

跨站请求伪造(Cross Site Request Forgery),利用跨站请求,在用户不知情的情况下,以用户身份伪造请求,核心是利用了浏览器Cookie和服务器session策略,盗取用户身份。

CSRF 的防御手段主要是识别请求者身份

  • 表单Token:Token在请求参数中增加随机数的办法阻止攻击者获得所有的请求参数
  • 验证码:提交的时候,需要用户输入验证码
  • Referer check:Referer记录请求来源,验证其是否合法,防盗链功能。

其他攻击

  • Error Code
  • HTML注释
  • 文件上传:只允许上传可靠的文件类型
  • 路径遍历:请求url中使用相对路径,遍历系统未开放的目录和文件,js,css资源文件部署在独立服务器,使用独立域名,其他文件不使用静态url访问,动态参数不包含文件路径信息。

web应用防火墙

统一拦截请求,过滤恶意参数,自动消毒,添加Token

ModSecurity

采用处理逻辑与攻击规则集合分离的架构模式,处理逻辑负责请求和响应的拦截过滤,规则加载执行。攻击规则集合负责描述对具体攻击的规则定义,模式识别,防御策略。这样就是一种可扩展的架构设计。

网站安全漏洞扫描

根据内置规则,构造具有攻击性的URL请求,模拟黑客攻击行为,发现网站安全漏洞。

信息加密技术

信息加密技术:单项散列加密,对称加密和非对称加密

单向散列加密

对不同输入长度的信息进行散列结算,得到固定长度的输出,但是是单向的。密码加密保存。

但是可以使用彩虹表来对密码密文进行猜测式破解。

为了加强单向散列计算的安全性,可以给散列算法加盐,salt相当于加密的密钥,增加破解难度(彩虹表)。

常用单向散列算法有MD5,SHA等。

对称加密

对称加密是加密和解密使用的同一个密钥,通常用在信息需要安全交换或者存储的场合,如Cookie加密,通信加密。

DES算法,EC算法

非对称加密

加密和解密使用的不是一个密钥,一个是对外界公开的,公钥,另一个只有所有者知道,为私钥。公钥加密的信息必须用私钥才可以解开。私钥加密的信息只有公钥才可以解开。

SSH之所以能够保证安全,原因在于它采用了公钥加密。

整个过程是这样的:(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

这个过程本身是安全的,但是实施的时候存在一个风险:如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪。因为不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。

可以设想,如果攻击者插在用户与远程主机之间(比如在公共的wifi区域),用伪造的公钥,获取用户的登录密码。再用这个密码登录远程主机,那么SSH的安全机制就荡然无存了。这种风险就是著名的”中间人攻击”(Man-in-the-middle attack)。

HTTPS传输中浏览器使用的数字证书就是经过权威机构认证的非对称加密公钥。

常用RSA算法。

数字签名则是前名称用私钥进行加密,然后发送给对方,接收方用签名者公钥对信息解密,因为私钥只有签名者拥有,所以信息不可抵赖,具有签名的性质。

密钥安全管理

  • 密钥和算法放在独立服务器上
  • 加密解密算法放在应用系统中,密钥在独立服务器中

信息过滤与反垃圾

文本匹配

敏感词过滤,Trie树,双数组Trie算法

确定一个有限状态自动机,根据输入数据进行状态转移。

分类算法

垃圾邮件分类模型,然后进行识别,贝叶斯分类算法。

黑名单

电子商务风险控制

风险

  • 账户风险
  • 买家风险
  • 卖家风险
  • 交易风险

风控

  • 规则引擎:业务规则和规则处理逻辑相分离的技术
  • 统计模型:机器学习