最近参加了一个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 文件。

  转载请注明出处: http://www.cnblogs.com/Miss-mickey/p/6636813.html

最新文章

  1. BZOJ 3931: [CQOI2015]网络吞吐量
  2. JavaScript学习1
  3. 添加系统右键菜单项 管理员取得所有权(W)(带盾牌)
  4. DOM何时Ready
  5. pl/sql developer——instant-client 简单配置
  6. Struts2中的Unable to load configuration错误的分析与解决方法
  7. Unity Networking API文档翻译(二):The High Level API
  8. C++程序设计课程学习的网址
  9. merge into 的用法
  10. UI4_UITableViewSectionIndex
  11. Microsoft Office 2010 Pro VOL简体中文正式版
  12. EFI、GPT和BIOS、MBR
  13. Selenium自动化初级/中级网络授课班招生
  14. Java中的空值判断
  15. php简单一句话分析
  16. HDU 3625 Examining the Rooms【第一类斯特灵数】
  17. ssm项目中遇到微信用户名称带有表情,插入失败问题
  18. 使用环信开发项目遇到错误提示 configure your build for VectorDrawableCompat
  19. Windows Server 2012 任务管理器“性能”Tab页显示磁盘信息
  20. Windows 7运行命令大全

热门文章

  1. Codeforces 768B Code For 1
  2. 学习笔记——Java数组
  3. Ansible详解(一)
  4. 详解JavaScript闭包
  5. Android -- RecyclerView实现顶部吸附效果
  6. C#语言基础——语句
  7. 为效率而生:开源Mac版Google Authenticator认证客户端GoldenPassport
  8. ACM 树形数组
  9. 3212: Pku3468 A Simple Problem with Integers
  10. 3385: [Usaco2004 Nov]Lake Counting 数池塘