安全攻防基础
四、网页脚本安全
1. 脚本安全的概念
动态网站
- 交互性
即网页会根据用户的要求和选择而动态改变和响应,将浏览器作为客户端界面
- 自动更新
即无须手动地更新 HTML 文档,便会自动生成新的页面,可以大大节省工作量
- 因时因人而变
即当不同的时间、不同的人访问同一网址时会产生不同的页面
脚本攻击
脚本攻击主要是针对动态网站进行的攻击,其原因是在建立动态网页的过程中没有对用户的输入输出进行有效的合法性验证
脚本分类
- 静态脚本
- HTML
- 动态脚本
- asp
- php
- jsp
- vbs
- asp.net
- …
2. SQL 注入
- 概念
程序员在编写代码时,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据或进行数据库操作
- SQL 注入基础
- SQL:结构化的查询语言,是关系型数据库通讯的标准语言
- 查询:Select statement from table where condition
- 删除记录:delete from table where condition
- 更新记录:update table set field=value where condtion
- 添加记录:insert into table field values(values)
- SQL 注入简单案例
后一个传递给数据库的“ or ‘1=1’” 使得查询语言的验证永远为 true,因此通过检验
3. SQL 注入防御
开发时过滤特殊字符
单引号、双引号、斜杠、反斜杠、冒号、空字符等的字符
过滤的对象
- 用户的输入
- 提交的 URL 请求中的参数部分
- 从 cookie 中得到的数据
部署防 SQL 注入系统或脚本
4. 跨站脚本攻击
跨站脚本
在远程 Web 页面的 HTML 代码中插入的具有恶意目的的数据,用户认为该页面是可信的,但是当浏览器下载该页面时,嵌入其中的脚本将被解释执行
跨站脚本成因
- CGI 程序没有对用户提交的变量中的 HTML 代码进行过滤或转换
- 这种攻击利用的是用户和服务器之间的信任关系,以及 Web 站点没有使用有效的输入输出验证来拒绝嵌入的脚本
危害
- 获取其他用户 Cookie 中的敏感数据
- 屏蔽页面特定信息
- 伪造页面信息
- 拒绝服务攻击
- 突破外网内网不同安全设置
- 与其它漏洞结合
- ….
5. 总结
- 脚本攻击从本质上是一种过滤不足造成的攻击
- 脚本是不需要编译的程序代码,依赖脚本引擎来解释执行,具有很好的操作系统适应性和可移植性
- 如果不可信的内容被引入到动态页面中,则无论是网站还是客户机都没有足够的信息识别这种情况的发生并采取保护措施
- 脚本攻击方法主要包括:SQL 注入攻击、跨站脚本攻击等