记一次网站漏洞修复经历

公司开发的一个电商型网站,扫描之后发现有部分的漏洞,我把这些漏洞分为以下几类
1.跨站脚本
2.框架注入
3.链接注入
4.基于HTTP连接的登录请求
以下会整理一下这几种类型的漏洞的原因和解决办法

跨站脚本攻击

1
一般是通过修改url参数,使程序渲染到页面中的css/js 执行入侵者的代码,跨站脚本攻击分成以下几种:

1、本地跨站脚本攻击
B给A发送一个恶意构造的Web URL,A点击查看了这个URL,并将该页面保存到本地硬盘(或B构造的网页中存在这样的功能)。A在本地运行该网页,网页中嵌入的恶意脚本可以A电脑上执行A持有的权限下的所有命令。

2、反射跨站脚本攻击
A经常浏览某个网站,此网站为B所拥有。A使用用户名/密码登录B网站,B网站存储下A的敏感信息(如银行帐户信息等)。C发现B的站点包含反射跨站脚本漏洞,编写一个利用漏洞的URL,域名为B网站,在URL后面嵌入了恶意脚本(如获取A的cookie文件),并通过邮件或社会工程学等方式欺骗A访问存在恶意的URL。当A使用C提供的URL访问B网站时,由于B网站存在反射跨站脚本漏洞,嵌入到URL中的恶意脚本通过Web服务器返回给A,并在A浏览器中执行,A的敏感信息在完全不知情的情况下将发送给了C。

3、持久跨站脚本攻击
B拥有一个Web站点,该站点允许用户发布和浏览已发布的信息。C注意到B的站点具有持久跨站脚本漏洞,C发布一个热点信息,吸引用户阅读。A一旦浏览该信息,其会话cookies或者其它信息将被C盗走。持久性跨站脚本攻击一般出现在论坛、留言簿等网页,攻击者通过留言,将攻击数据写入服务器数据库中,浏览该留言的用户的信息都会被泄漏。

针对跨站脚本攻击的解决方式为:
1.对于已经知道固定值的,可以优先考虑对输入的参数限制/转换固定的范围值
例如:http://XXX.XXX.xom/list.html?id=408,这边的id只允许整型,则在获取使用的时候直接先转换一下,如下:

$id = intval(_GET['id']);

再举个例子比如有个页面的访问地址为:http://XXX.XXX.xom/list.html?status=finish,这边参数有固定值,在获取的时候可以将这个参数限制,如下:

$status = $_GET['status'];
if ($status != 'finish'){//非法参数
}

2参数是未知的时候,采用以下方式处理。
- 过滤参数的特殊字符:

[1] | (竖线符号)
[2] & (& 符号)
[3];(分号)
[4] $(美元符号)
[5] %(百分比符号)
[6] @(at 符号)
[7] ‘(单引号)
[8] “(引号)
[9] \’(反斜杠转义单引号)
[10] \”(反斜杠转义引号)
[11] < >(尖括号)
[12] ()(括号)
[13] +(加号)
[14] CR(回车符,ASCII 0x0d)
[15] LF(换行,ASCII 0x0a)
[16] ,(逗号)
[17] \(反斜杠)

-输出到页面中的内容需要转码,使用htmlspecialchars函数

3、设置cookie=httponly,这个设置是干嘛用的呢,这边解释一下

如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性

不过即便是这样,开发过程中也尽量不要将重要信息存入cookie

在php.ini中增加如下配置
session.cookie_httponly = 1

框架注入

与跨站脚本一样,也是入侵修改url,增加iframe标签,从而达到入侵的效果。例如:
URL:http://www.XXXom/item-list.html?cat_id=408
入侵:cat_id=408, frame_inj: #*/-->'");></iframe></script></style></title></textarea><iframe src=http://www.anonymous.com>

具体解决方案:
1.同跨站脚本的处理方式,进行参数的转换以及未知参数的过滤
2.可以针对关键词进行过滤,例如:

‘javascript’, ‘vbscript’, ‘expression’, ‘applet’, ‘meta’, ‘xml’, ‘blink’, ‘link’, ‘style’, ‘script’, ‘embed’, ‘object’, ‘iframe’, ‘frame’, ‘frameset’, ‘ilayer’, ‘layer’, ‘bgsound’, ‘title’, ‘base’ 等,具体需根据自己的需求进行过滤

链接注入

链接注入”是修改站点内容的行为,其方式为将外部站点的 URL 嵌入其中,或将有易受攻击的站点中的脚本 的 URL 嵌入其中。将 URL 嵌入易受攻击的站点中,攻击者便能够以它为平台来启动对其他站点的攻击,以及攻击这个易受攻击的站点本身。
在这些可能的攻击中,有些需要用户在攻击期间登录站点。攻击者从这一易受攻击的站点本身启动这些攻击,成功的机会比较大,因为用户登录的可能性更大。
“链接注入”漏洞是用户输入清理不充分的结果,清理结果会在稍后的站点响应中返回给用户。攻击者能够将危险字符注入响应中,便能够嵌入 URL 及其他可能的内容修改。

一下是示例,比如请求地址中有个参数,为name,请求的地址为:http://www.xxx.com/user.php?name=marry,会得到以下响应
<HTML>
<header>
</header>
<body>
This is marry
</body>
</HTML>

然而,恶意的用户可以发送下列请求:
HTTP://www.xxx.com/index.php?name=
这会返回下列响应:

This is .

记一次网站漏洞修复经历相关推荐

  1. PrestaShop 网站漏洞修复如何修复

    2019独角兽企业重金招聘Python工程师标准>>> PrestaShop网站的漏洞越来越多,该网站系统是很多外贸网站在使用的一个开源系统,从之前的1.0初始版本到现在的1.7版本 ...

  2. PrestaShop 网站漏洞修复办法

    PrestaShop网站的漏洞越来越多,该网站系统是很多外贸网站在使用的一个开源系统,从之前的1.0初始版本到现在的1.7版本,经历了多次的升级,系统使用的人也越来越多,国内使用该系统的外贸公司也很多 ...

  3. Drupal 网站漏洞修复以及网站安全防护加固方法

    2019独角兽企业重金招聘Python工程师标准>>> drupal是目前网站系统使用较多一个开源PHP管理系统,架构使用的是php环境+mysql数据库的环境配置,drupal的代 ...

  4. 网站漏洞修复方案防止SQL注入攻击漏洞

    SQL注入漏洞在网站漏洞里面属于高危漏洞,排列在前三,受影响范围较广,像asp..net.PHP.java.等程序语言编写的代码,都存在着sql注入漏洞,那么如何检测网站存在sql注入漏洞? SQL注 ...

  5. 网站漏洞修复网站安全检测整体解决方案

    在很多网站系统构建的一开始,最注重的就是网站程序代码的安全,我们SINE安全对甲方网站公司部署过很多的网站安全系统,之前有一些网站设计公司对于每个项目都会由专人去负责开发与设计,并与甲方网站公司进行沟 ...

  6. 网站漏洞修复公司处理网站被篡改跳转到其他网站的解决办法

    2019独角兽企业重金招聘Python工程师标准>>> 某一客户单位的网站首页被篡改,并收到网监的通知说是网站有漏洞,接到上级部门的信息安全整改通报,贵单位网站被植入木马文件,导致网 ...

  7. 网站漏洞修复对DiscuzX3.4论坛总是被篡改页面

    Discuz!论坛目前最新版本为3.4版本,已经好久没有更新了,我们SINE安全在对其网站安全检测的同时发现一处漏洞,该漏洞可导致论坛的后台文件可以任意的删除,导致网站瘫痪,后台无法登陆.关于该网站漏 ...

  8. linux网站漏洞修复,CentOS Bash漏洞终极修复方法

    目前已确认被成功利用的软件及系统:所有安装GNU bash 版本小于或者等于4.3的Linux操作系统. [Bash漏洞描述]该漏洞源于你调用的bash shell之前创建的特殊的环境变量,这些变量可 ...

  9. 记一次tomcat漏洞修复补丁升级

    tomcat有安全漏洞,现在用的版本是tomcat8.5.3. 其中有一个漏洞描述是这样子的:Apache Tomcat Security Manager 安全限制绕过漏洞(CVE-2016-5018 ...

  10. 网站漏洞如何修复web漏洞jeecms

    jeecms 最近被爆出高危网站漏洞,可以导致网站被上传webshell木马文件,受影响的版本是jeecms V6.0版本到jeecmsV7.0版本.该网站系统采用的是JAVA语言开发,数据库使用的是 ...

最新文章

  1. php header 重定向 url不变_PHP实现页面跳转功能
  2. jpa query 取数组第一个_数据结构基础-数组
  3. 前端参数无法转为后端实体内部类_Spring Boot返回前端Long型丢失精度
  4. Source Insight中查看文件显示全路径
  5. 公共情报工具automater的基本使用
  6. phpcms文件夹plugin调用怎么写路径 - 代码篇
  7. MemcacheQ 安装与使用
  8. Numpy的学习6-深浅赋值(copydeep copy)
  9. SqlHelper的编写
  10. 三、地址族与数据序列
  11. IDE已破解,不用预热,马上进入「微信小程序」开发
  12. java boolean byte_java基础boolean类型所占字节问题
  13. 为什么软件开发方法论让你觉得糟糕?
  14. Xposed的框架的使用
  15. 移动硬盘插入提示需要格式化RAW_移动硬盘数据恢复 – 图文教程
  16. 探索学习 Vue 组件篇 第二篇 组件类型:非单文件组件
  17. TCP的三次握手与四次挥手
  18. matlab的app tab,MATLAB 之 App designer 小白学习(四)
  19. php adodb smarty,ADODB结合SMARTY使用~超级强
  20. 基于多目标灰狼算法的冷热电综合三联供微网低碳经济 MATLAB 仿真

热门文章

  1. 把ip导入mysql_纯真IP数据库导入mysql
  2. 北京联通光猫WO-36(HG220GS-U)改为桥接模式
  3. 狂神ajax,Ajax 学习笔记 by狂神说
  4. 微信群发可以分组吗?群组标签分组设置
  5. 摄像头M-JPEG 格式分析
  6. 授课型英硕申请Ph.D (带奖)历程
  7. java走迷宫课程设计_java课程设计走迷宫.doc
  8. 逆火软件测试工资,逆火刷机软件介绍和软件使用说明
  9. vue echarts 条纹柱状横向图
  10. 五步恢复XP系统“桌面清理向导”