一、背景
Web1.0时代--静态页面:html或者和htm,是一种静态的页面格式,不需要服务器解释其中的脚本,由浏览器解释。
Web2.0时代--动态页面:asp、aspx、php、jsp等,由相应的脚本引擎来解释执行,根据指令生成静态网页,在前端使用脚本程序增强交互。
二、原因
Web业务平台的不安全性主要是由web平台的特点,即开放性所导致的。以及网站是人写的,人都会犯错或考虑问题不周等,越大的系统越容易有漏铜。
三、Web攻击方式
1.SQL注入
1.1出现场景
当开发登录模块的时候,如果我们使用是mysql操作php,并非使用mysqli、PDO等;当查询用户是否存在的SQL是这样写的,select * from user where name = 'admin' and password = '123456'; 这样写是以查询来的,但是会出现漏洞。居心叵测的人就可以使用万能密码xxx ' or 1 # 来破解上面的登录操作。
1.2SQL注入原理
用户在输入用户名的时候直接输入万能密码:xxx' or 1 #,那么最后拼接的SQL会变为:select * from user where name = 'xxx' or 1 # and password = '123456'; #符号代表SQL语法中的注释,上面的SQL就如同select * from user where name = 'xxx' or 1 。这样是可以查询到用户信息的,所以用户就登录了系统。
1.3如何防范
(1)过滤非法字符:保证传来的字符串作为一个参数,而不是语句拼接的一部分。所以需要对特殊字符进行转义,可以使用addslashes
函数,我们可以给$_GET、$_POST、$_COOKIE等几个数组进行转义。
(2)确保正确的数据类型:判断url或表单中传来的数据是否为想要的数据类型,如果不是,进行相应的数据类型转换。如使用方法intval()
提取变量中的整数值;如果参数错误,可以提示用户非法操作!
(3)使用正则表达式:设置用户的输入规则,限制用户不安规则瞎输
(4)使用预处理而不是拼接SQL语句:使用mysql操作数据库会出现漏洞,避免出现这样的问题,可以使用mysqli、PDO来操作数据库。因为它们两都是将SQL预处理的,然后放入参数的。
2.XSS跨站
2.1出现场景
在Web应用中,上传功能都是用户与服务器进行文件交互的重要手段。每个人都会接触到上传功能,以头像和附件上传功能最为常见。在这个过程中,用户会上传自己的信息,服务器接受到用户端的上传信息后将文件保存到服务器某一个目录中。
2.2XSS跨站原理
反射型跨站通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特有的恶意代码参数被HTML解释、执行。它的特点是非持久化,必须用户点击带有特定参数的链接才能引起。
2.3如何防范
(1)网站要严格要求上传的内容,发现病毒和木马立即停止上传
(2)增强Web解释器,对不应该解释的代码能够识别、执行
(3)对上传的文件进行加密,保密好文件的路径和文件名称,不能外漏出去