Web开发常见安全问题及解决

Web攻击动机:

  • 恶作剧;
  • 关闭Web站点,拒绝正常服务;
  • 篡改Web网页,损害企业名誉;
  • 免费浏览收费内容;
  • 盗窃用户隐私信息,例如Email;
  • 以用户身份登录执行非法操作,从而获取暴利;
  • 以此为跳板攻击企业内网其他系统;
  • 网页挂木马,攻击访问网页的特定用户群;
  • 仿冒系统发布方,诱骗用户执行危险操作,例如用木马替换正常下载文件,要求用户汇款等

1.SQL注入(SQL Injection)

定义
由于程序中对用户输入检查不严格,用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
原因分析
其本质是对于输入检查不充分,导致SQL语句将用户提交的非法数据当作语句的一部分来执行。
由于我们的部分WEB应用,采用Jsp+JavaBean或SSH框架,代码中会有直接写SQL(或HQL)语句,而有些SQL是用拼串实现的。
风险
SQL盲注:如果系统屏蔽了详细的错误信息,那么对攻击者而言就是盲注入,可能会查看、修改或删除数据库条目和表
使用SQL注入的认证旁路:可能会绕开 Web 应用程序的认证机制

例子:
               Web开发常见安全问题及解决_第1张图片

预防措施

  • 严格限定参数类型,明确参数检验的边界,必须在服务端执行数据验证
  • 采用参数化查询的方法(推荐)
  • 内置过滤系统(本质是黑名单,很常见但是不推荐)
  • 数据库加固

2.跨站脚本漏洞(XSS) 

定义
  它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。


分类
持久型XSS(Persistent),与非持久型XSS相反,它是指通过提交恶意数据到服务器,通过Web应用程序输出恶意数据输出到页面,持久型XSS多出现在Web邮箱、BBS、社区等从数据库读出数据的正常页面(比如BBS的某篇帖子中可能就含有恶意代码)
非持久型XSS(Non-persistent),即反射型,它是指那些浏览器每次都要在参数中提交恶意数据才能触发的跨站脚本漏洞。

例子:

Web开发常见安全问题及解决_第2张图片

预防措施

一.过滤:

  • 有时候过滤会导致意外的结果,例如alice’s 变成了alices。
  • 有时候需要多次过滤,例如t>过滤掉

你可能感兴趣的:(开发)