web攻击之零:WEB攻击及防御技术汇总
一、XSS攻击
【介绍】
xss攻击是跨站脚本攻击,例如在表单中提交含有可执行的javascript的内容文本,如果服务器端没有过滤或转义这些脚本,而这些脚本由通过内容的形式发布到了页面上,这个时候如果有其他用户访问这个网页,那么浏览器就会执行这些脚本,从而被攻击,从而获取用户的cookie等信息。
【防御】
1、对于敏感的cookie信息,使用HttpOnly,使document对象中找不到cookie。
2、对于用户输入的信息要进行转义。
二、CSRF攻击
【介绍】
CSRF攻击即跨站域请求伪造,例如,小明在浏览银行A网站的时候并没有关掉银行网站,这时小明又访问了携带CSRF攻击的B网站,而这时候B网站通过对银行的服务器发送转账请求,并且携带小明的在银行网站的cookie信息,在参数上把小明账号上的钱转到B网站所有人的账户上,这时url得到响应,小明的钱就丢了。
【防御】
1、敏感请求使用验证码。
2、验证HTTP Referer字段。Referer字段记录了HTTP请求的来源地址,从银行A网站发出来的请求会带有A网站的地址,从携带CSRF地址发出的请求会携带B网站的地址,我们只需在每个敏感请求验证Referer值,如果是来自A网站的通过,否则不通过。但是这种方法把安全寄托于浏览器,并不完全安全,在某些浏览器上,还是可以通过篡改 Referer 从而进行CSRF攻击。而且,在某些用户禁用Referer的情况下,服务器会一直拒绝客户的请求。
3、在请求地址中添加token 并验证。在用户登录之后,产生token 并放入session中,在每次请求时把token从session中拿出来,以参数的形式加入请求,在服务器端建立拦截器验证该token,token则通过,否则拒绝。但是这种方法也是有安全问题的,在某些网站支持用户发表链接的,那么黑客在该网站发布自己的个人网站地址,系统也会为这个地址后加上token,则黑客可以在自己的网站上得到这个token参数,从而发动CSRF攻击。
4、在HTTP头中自定义属性token 并验证。把token作为自定义属性放在HTTP的头中,通过封装XMLHttpRequest可以一次性给所有请求加上token 属性。这样子token就不会暴露在浏览器地址中。
三、SQL注入
【介绍】
SQL注入攻击,攻击者在提交表单的时候,在表单上面填写相关的sql语句,而系统把这些字段当成普通的变量发送给服务器端进行sql查询,则,由攻击者填写的sql会拼接在系统的sql语句上,从而进行数据库的某些操作。
例如在简单的登陆表单里面
<form action="/login" method="POST">
Username: <input type="text" name="username" />
Password: <input type="password" name="password" />
<input type="submit" value="登陆" />
</form>
这时候系统处理的sql语句是这样
username:=r.Form.Get("username")
password:=r.Form.Get("password")
sql:="SELECT * FROM user WHERE username='"+username+"' AND password='"+password+"'"
而这时候攻击者输入的用户名如下,密码为任意值的情况下
myuser' or 'foo' = 'foo' --
那么系统的sql语句就会变成这样
SELECT * FROM user WHERE username='myuser' or 'foo' = 'foo' --'' AND password='xxx'
则攻击者就会成功登陆
【防御】
1、表单过滤,验证表单提交的合法性,对一些特殊字符进行转义处理
2、数据库权限最小化
3、查询语句使用数据库提供的参数化查询接口,不要直接拼接SQL
四、身份认证和会话
【攻击】
黑客在浏览器中停用JS,防止客户端校验,从而进行某些操作。
【防御】
1、隐藏敏感信息。
2、对敏感信息进行加密。
3、session 定期失效
五、权限与访问控制
【攻击】
能通过URL参数的修改达到访问他人页面,例如,黑客能够使用一下的链接去访问在某商城上自己的订单链接
https://***.***.com/normal/item.action?orderid=51338221644
这个时候如果网站没有相关权限验证,那么他也能通过下面的链接去访问其他人的订单。
https://***.***.com/normal/item.action?orderid=其他id
这样子就会造成商城其他人的隐私的泄露。
【防御】
1、添加权限系统,访问的时候可以加上相应的校验。
六、不安全加密存储
【防御】
1、加密存储敏感信息
2、不用md5加密
七、上传漏洞
【攻击】
在图片上传的时候,攻击者上传非图片,而是可远程执行的的脚本,这时候,入侵者就可以远程的执行脚本来对服务器进行攻击
【防御】
1、限制文件上传类型
2、使用第三方文件托管等
八、传输层未加密
【防御】
1、使用安全的https版本
2、敏感信息使用https传输
3、非敏感信息使用http传输
九、未验证的重定向和转发
【攻击】
用于钓鱼,黑客在存在漏洞的网址后添加跳转参数,并且把参数转码,把链接发送给用户,诱导用户点击,这时候用户看到链接的最前面是熟悉的网址,会点击进去,从而是用户的点击发生重定向到非法网站。
【防御】
1、添加跳转白名单
2、跳转前提示用户即将发生跳转到其他可疑网页。
十、WebShell
【攻击】
黑客在win系统中向被攻击网站上传 abc.asp;.jsp文件,这时候系统识别为jsp文件,然后传送到服务器的时候,某些系统上面会识别为 asp 文件。
web攻击之零:WEB攻击及防御技术汇总的更多相关文章
- [Web安全之实战] 跨站脚本攻击XSS
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. 文章Points: 1. 认识XSS 2. ...
- WEB服务端安全---注入攻击
注入攻击是web领域最为常见的攻击方式,其本质是把用户输入的数据当做代码执行,主要原因是违背了数据与代码分离原则,其发生的两个条件:用户可以控制数据输入:代码拼接了用户输入的数据,把数据当做代码执行了 ...
- web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造)
web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造) XSS(跨站脚本攻击)和CSRF(跨站请求伪造) Cross-site Scripting (XSS) h ...
- 使用 PHP 构建的 Web 应用如何避免 XSS 攻击
本文首先简单介绍开发测试人员如何对 Web 应用进行 XSS 漏洞测试,如何借助工具绕过客户端 JavaScript 校验输入恶意数据:然后针对使用 PHP 语言构建的 Web 站点,从在输出端对动态 ...
- ref:一种新的攻击方法——Java Web表达式注入
ref:https://blog.csdn.net/kk_gods/article/details/51840683 一种新的攻击方法——Java Web表达式注入 2016年07月06日 17:01 ...
- web攻击之四:DOS攻击
DDOS是DOS攻击中的一种方法. DoS:是Denial of Service的简称,即拒绝服务,不是DOS操作系统,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务. ...
- Java Web使用过滤器防止Xss攻击,解决Xss漏洞
转: Java Web使用过滤器防止Xss攻击,解决Xss漏洞 2018年11月11日 10:41:27 我欲乘风,直上九天 阅读数:2687 版权声明:本文为博主原创文章,转载请注明出处!有时候 ...
- web攻击之六:DNS攻击原理与防范
随着网络的逐步普及,网络安全已成为INTERNET路上事实上的焦点,它关系着INTERNET的进一步发展和普及,甚至关系着INTERNET的生存.可喜的是我们那些互联网专家们并没有令广大INTERNE ...
- 如何让Asp.net Web Api全局预防Xss攻击
一.概述 二.什么是XSS 三.预防方法 四.在WebApi中如何实现 在实现之前,需要了解ASP.NET WEB API的pipeline机制. 如上,可以采用多种方式进行参数的过滤 1.重写Del ...
随机推荐
- InputFormat的认识
InputFormat 负责处理MR的输入部分. 有三个作用: 一.验证作业的输入是否规范. 二.把输入文件切分成InputSplit. 三.提供RecordReader 的实现类,把InputSpl ...
- Centos 7.0系统服务管理
从Centos7开始,不再用sysvinit管理系统服务了,而是改用了systemd,因此对系统服务管理方法已经变更,以下简述 1.查看当前所有系统服务的状态 systemctl 2.查看指定系统服务 ...
- 查看并修改Linux主机名命令hostname
查看主机名 hostname可以查看主机名 export也可以查看 修改主机名 echo new-hostname > /proc/sys/kernel/hostname (系统启动时,从此文件 ...
- 为什么引入TSS
[0]README text description from orange's implemention of a os and for complete code ,please visit ht ...
- java 多参实现
package com.northeasttycoon.monitor.service; import static java.lang.System.out; /** * Created by no ...
- 实现RTSP摄像机进行网页直播和微信直播的技术方案:EasyNVR自动更新方法
问题背景: 1.EasyNVR的用户越来越多,技术人员一一对应解答效率不高: 2.随着EasyNVR应用场景的不断增加,以及EasyNVR自身在技术上的不断优化,版本更新比较快: 3.由于开发人力有限 ...
- 转义字符\r \n \t \b 截图
- nohup COMMAND > FILE
nohup --help nohup(1) - Linux man page https://linux.die.net/man/1/nohup
- 【JAVA学习】struts2的action中使用session的方法
尊重版权:http://hi.baidu.com/dillisbest/item/0bdc35c0b477b853ad00efac 在Struts2里,假设须要在Action中使用session.能够 ...
- 流畅的python学习笔记:第十一章:抽象基类
__getitem__实现可迭代对象.要将一个对象变成一个可迭代的对象,通常都要实现__iter__.但是如果没有__iter__的话,实现了__getitem__也可以实现迭代.我们还是用第一章扑克 ...