博客列表 >常见的网站攻击

常见的网站攻击

萝卜温的博客
萝卜温的博客原创
2018年08月01日 15:10:512606浏览
  • XSS:跨站式脚本攻击 -- 用户提交的参数中带有恶意JavaScript代码,经过CGI(PHP等)之后输出到页面内容中,被浏览器解析执行而完成的一种攻击。分为反射型XSS和存储型XSS两种!

说明:http://localhost/index.php?name=这里是被恶意嵌入的JavaScript代码,能够获取点击这条链接的用户的cookie并发送到攻击者服务器!
<?php 
    $name = $_GET['name'];
    echo $name;
?>
防止手段:
执行过滤链 
1.htmlentities()/htmlspecialchars()(使<script>标签里面的JS代码完全失效+使非<script>标签里面的JS代码部分失效+实体化全部有实体符的字符或者一部分有实体符的字符)
2.自定义函数过滤(使<script>标签中的JS代码失效、使HTML元素on***事件属性失效、使URL中指定的javascript失效)

tips:
在网页中运行JavaScript的方式有4种:
1.JS代码放在 <script> 标签中 
2.JS代码放在一个js文件中,使用 <script src="**"></script>加载运行 
3.元素的on***属性上指定JS代码 
4.在需要使用URL的属性中使用 javascript:JS代码
  • CSRF:跨站式请求伪造 -- 参数是攻击者伪造的,但是却是你在不知情的情况下亲手把这些伪造参数发送到服务器!

发送请求的方式一般有get和post两种
get方式:

get.png

POST方式:

post.png

解决方法:
1.使用POST请求,增加伪造请求的难度!
2.检测 referer 是否为表单页面
3.生成表单页面时发送token,提交时验证token
  • SQL注入 -- 在SQL参数中注入另外一条SQL语句

解决方法:
1.使用数据库预处理语句
2.拼接SQL语句前使用 addslashes() 对参数值进行转义
  • HTTP header 注入攻击 -- HTTP 使用 CRLF(0x0D 0x0A) 分隔头部和内容,所以在头部中使用CRLF分隔,注入一些头部(Set-Cookie)或者js代码同样能够达到注入的目的!一般是将用户输入的内容不加检测地设置为头部的时候发生注入!

解决方法:
1.干掉 CRLF,并且进行严格的正则匹配
  • Cookie 攻击:由于 cookie 可以被 js 查看(document.cookie),所以cookie信息才会能够通过XSS的方式被盗取,然后盗取者就能够使用这个cookie伪装成合法用户!

解决方法:
给 cookie 加上 HttpOnly 标记,禁止 js 读取!
  • 重定向攻击:一般通过合法网站来伪装自己,通过合法网站的重定向链接跳转到“钓鱼网站”,“钓鱼网站”一般神似正规网站,域名也极度相似,但是却布满了陷阱和地雷!

例如,一个知名网站链接 http://www.example.com/index.php?redirect=***提供了重定向的功能,
而这个链接允许重定向到任意的网站,这样子就很恐怖了!假如“姜太公”(攻击者)有一个钓鱼网站,
就能借助这个知名网站来掩饰自己了,
例如,http://www.example.com/index.php?redirect=http://www.exemple.com/index.php
即时跳转到了 http://www.exemple.com/index.php,不细心也是看不出来的!

解决方法:
1.知名网站链接要添加白名单列表
2.token验证
  • 上传文件攻击 

1.要保留上传文件的文件名,但是上传文件的文件名和服务器编码不一样,出现了乱码,而这些乱码恰好是 ***.php ,这就恐怖了!
2.上传文件文件名非法

解决方法:
1.生成随机的文件名,即时要保留文件名,也可以用一个表或者建立映射
2.检测上传文件的后缀


上一条:PHP连接MySQL下一条:编译和链接2.1
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议