常见的几种web攻击方式
- SQL注入攻击
- 重定向攻击
- 上传文件攻击
- Dos攻击(Denial of Service attack)
- 跨站点请求伪造(CSRF,Cross-Site Request Forgeries)
- XSS攻击(Cross-Site scripting)
常见的web攻击原理
xss跨站攻击技术:
主要是攻击者往网页里嵌入恶意脚本,或者通过改变html元素属性来实现攻击,主要原因在于开发者对用户的变量直接使用导致进入html中会被直接编译成js,通常的get请求通过url来传参,可以在url中传入恶意脚本,从而获取信息,解决方法:特殊字符过滤。
主要是攻击者往网页里嵌入恶意脚本,或者通过改变html元素属性来实现攻击,主要原因在于开发者对用户的变量直接使用导致进入html中会被直接编译成js,通常的get请求通过url来传参,可以在url中传入恶意脚本,从而获取信息,解决方法:特殊字符过滤。
xss是什么
- 跨站脚本攻击
- Web页面里面插入恶意script代码
- 用户浏览该页之时,嵌入其中web里面的script代码会被执行
- 分为:反射型和存储型
xss思路
- 寻找注入点
url 是否带有参数
用户可以输入的地方 - 构造攻击
构造攻击url
构造攻击脚本 - 提交
制作诱人的连接
提交攻击脚本 - 利用敏感信息
利用这些数据做各种坏事了,比如以受害用户身份登陆漏洞网站等
- 寻找注入点
xss的类型
- 反射型:通过给别人发送带有恶意脚本代码参数的url,当url地址被打开时,特有的恶意代码参数被HTML解析、执行
- 存储型:通过提交恶意代码,访问者点击恶意代码、图片后,恶意代码被执行或者跳转到恶意网站,造成个人信息被泄露。
sql注入攻击:
主要是就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如select * from test where username=”wuxu” or 1=1,这样会使用户跳过密码直接登录,具体解决方案:
- 特殊字符过滤,不要用拼接字符串的方法来凑sql语句。
- 对sql语句进行预编译,比如java的preparedstatement。
- 关闭错误信息,攻击者可能会通过不断的尝试来得到数据库的一些信息,所以关闭错误信息变得重要起来。
- 客户端对数据进行加密,使原来传进来的参数因为加密而被过滤掉。
- 控制数据库的权限,比如只能select,不能insert,防止攻击者通过select * from test ;drop tables这种操作
CSRF(Cross-site request forgery跨站请求伪造
CSRF攻击原理
CSRF攻击原理比较简单,如图1所示。其中Web A为存在CSRF漏洞的网站,Web B为攻击者构建的恶意网站,User C为Web A网站的合法用户。
用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。
CSRF漏洞防御
CSRF漏洞防御主要可以从三个层面进行,即服务端的防御、用户端的防御和安全设备的防御。
Dos攻击(Denial of Service attack)
是一种针对服务器的能够让服务器呈现静止状态的攻击方式。有时候也加服务停止攻击或拒绝服务攻击。其原理就是发送大量的合法请求到服务器,服务器无法分辨这些请求是正常请求还是攻击请求,所以都会照单全收。海量的请求会造成服务器停止工作或拒绝服务的状态。这就是Dos攻击。