Web安全基础总结

Web安全基础总结

 

1.SQL注入(SQL Injection)

定义:

由于程序中对用户输入检查不严格,用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。

原因分析:

    其本质是对于输入检查不充分,导致SQL语句将用户提交的非法数据当作语句的一部分来执行。由于我们的部分WEB应用,采用Jsp+JavaBean或SSH框架,代码中会有直接写SQL(或HQL)语句,而有些SQL是用拼串实现的。

风险:

SQL盲注:如果系统屏蔽了详细的错误信息,那么对攻击者而言就是盲注入,可能会查看、修改或删除数据库条目和表

使用SQL注入的认证旁路:可能会绕开 Web 应用程序的认证机制。

备注:

关于sql注入漏洞

它不是数据库的漏洞。它不是web服务程序或脚本解释器的漏洞。

它是应用程序本身的bug,是网站程序开发造成的问题。

 

如何防止SQL注入:

1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和双"-"进行转换等。

 

2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。

 

3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

 

4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。

 

5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装。

 

6.采用一些工具或网络平台检测是否存在SQL注入。

 

2.跨站脚本漏洞(XSS)

定义:

    它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。XSS本质是在于执行脚本[javascript/html等],攻击者的js能力越强攻击效果越惊人。

    这类攻击一般不会对网站主机本身有任何威胁,攻击者使用某些语言以网站主机为跳板对网站使用者进行攻击。

 

分类

    持久型XSS(Persistent),与非持久型XSS相反,它是指通过提交恶意数据到服务器,通过Web应用程序输出恶意数据输出到页面,持久型XSS多出现在Web邮箱、BBS、社区等从数据库读出数据的正常页面(比如BBS的某篇帖子中可能就含有恶意代码)

    非持久型XSS(Non-persistent),即反射型,它是指那些浏览器每次都要在参数中提交恶意数据才能触发的跨站脚本漏洞。

 

如何防止XSS跨站脚本攻击:

原则:不相信用户输入的数据

注意:攻击代码不一定在

 

1.将重要的cookie标记为httponly,这样的话Javascript中的document.cookie语句就不能获取到cookie了。

 

2.只允许用户输入我们期望的数据。例如:年龄的textbox中,只允许用户输入数字,而数字之外的字符都过滤掉。

 

3.对数据进行HtmlEncode处理。<转化为<、>转化为>、&转化为&、'转化为'、"转化为"、空格转化为 。

 

4.过滤或移除特殊的Html标签。例如:

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