常见的安全漏洞和攻击方式(待更新)

防跨站

  跨站攻击:通过跨站点脚本,注入前端主要是HTML,当其它用户获取这些被注入的代码后,会窃取用户敏感cookie信息,攻击者根据这些信息进行会话劫持,直接以合法用户身份登陆账户。

  CSRF(跨站请求伪造):Crossing Site Recource Forge。

大致的触发流程是:

  1. 用户登录了站点A,并且在Cookie中留下了A站点的认证信息
  2. 用户进入了站点B,而站点B用一些方式(比如一个提交行为是到A站点某关键接口的表单)引诱用户去点击。当用户点击时,会发出到A站点的请求。而浏览器会给这个请求附带上A站点的认证信息,从而让这个请求能够执行。这种行为可能是,但不限于,给某个A站点的某个其他用户提权/转账/发文辱骂等等。

  解决方案(可参考Cookie,Session,Token):

  1. 编码和过滤,将HTML字符转换为HTMLEntities编码,对js代码进行转义。
  2. 避免使用cookie,而使用Local Storage,但会使XSS攻击更容易。
  3. 使用CSRF Token作表单验证。
  4. 给所有接口都添加一个请求secret,来标记其来自于合法的客户端。
  5. 用Same-Site Cookie限制站点必须同域名才能携带cookie。
  6. 总是用json格式提交,禁止允许跨域的application/x-www-form-urlencoded格式,而使用application/json。
  7. 双认证,认证信息同时存放在HttpOnly Cookie和Authorization Header,并在服务器对比。
  8. 使用HTTPS,将Cookie设置为Secure,浏览器就可以只在访问https网址时才会携带Cookie。

CORS


防注入

SQL注入:将SQL命令隐藏在表单提交等请求中,达到欺骗服务器执行恶意的SQL操作。

解决方案:
1.使用预编译,不要拼接字符串
2.添加过滤
3.前端检测


防篡改

防止网页解决方案:
1.外挂轮询,通过检测程序,用轮询的方式判断网页完整性。
2.核心内嵌,在Web服务器中增加篡改检测模块,在网页流出时检查,被篡改时阻断访问,报警并恢复。
3.事件触发,利用操作系统的文件系统接口。

防止参数篡改:
参数加密


防挂马

挂马:即在网页中添加木马脚本。

解决方案:服务器端防止文件被读写。


防黑客

解决方案:好的安全框架+成熟的服务器安全系统。


DNS攻击

服务器端解决