web安全学习-验证机制存在的问题

验证机制是应用程序防御恶意攻击的中心机制。它处于防御未授权的最前沿,如果用户能够突破那些防御,他们通常能够控制应用程序的全部功能,自由访问其中的数据。缺乏安全稳定的验证机制,其他核心安全机制(如回话管理和访问控制)都无法有效实施。

web应用程序常用的验证机制有:

1)  基于HTML表单的验证(最常用)

2)  多元机制,如组合型密码和物理令牌

3)  客户端SSL证书或智能卡(成本非常昂贵)

4)  HTTP基本和摘要验证(内网使用较多)

5)  使用NTLM或Kerberos整合windows的验证

6)  验证服务

接下来说一下,在验证机制中可能存在的一些问题。一共分为两个个方面进行说明,分别为设计缺陷和执行缺陷

验证机制的设计缺陷:

1)  密码保密性不强:使用非常短或空白的密码,已常用的字典词汇或名称为密码,密码和用户名完全相同,依然使用默认密码,存在这些情况容易导致暴力破解。

 

2)  蛮力攻击登陆(允许攻击者使用不同的密码重复进行登陆尝试)

 

3)  详细的失败信息(显示是用户名或者密码错误,攻击者可以轻易的确定有效的用户名作为随后攻击的基础)

通过详细的失败信息可以枚举用户名,然后根据用户名去猜测密码。

4)  证书传输易受攻击(使用非加密的HTTP连接,应用程序处理证书的方式不安全)

进行一次成功登陆,监控客户端和服务器之间的所有来回流量,确定在来回方向上传输证书的每一种情况,如果发现通过URL字符串或者cookie的方式提交证书,想法弄清楚开发者这样做的目的。同时使用HTTP协议或者查询字符串传递都是不安全的。

5)  密码修改功能(允许详细的错误信息,说明被请求的用户名是否有效,允许攻击者无限制猜测现有密码字段,在验证现有密码后,仅检查新密码与确认密码)

使用无效的用户,无效的现有密码及不匹配的“新密码”和“确认密码”值向密码修改功能提交各种请求,设法确定任何可用于用户名枚举和暴力攻击的行为。

6)  忘记密码功能

用户名枚举,质询响应问题

7)  记住我功能

记住我功能通过简单的cookie执行,可能造成推测出其cookie值从而避免登陆

8)  用户伪装功能(造成垂直提权等功能)

9)  证书确认不完善(截断密码,只确认前n个字符,不对密码进行大小写检查,删除不常用的字符)

10) 非唯一性用户名(枚举,泄露另一个账户的密码)

11)  可预测用户名

12)  可预测初始密码

13)  证书分配不安全(通过邮件或者邮寄密码,激活URL表现出某种顺序)

 

验证机制执行缺陷:

1)故障开放登陆机制(逻辑缺陷,

 

 

2)多阶段登录机制中的缺陷

一些应用程序使用精心设计的多阶段登录机制,例如输入用户名和密码,响应一个质询,答案是pin中的特殊数字或一个值得纪念的词,提交在不断变化的物理令牌上显示的某个值。

3)不安全的证书存储

以明文存储证书

 

上面输了验证机制中可能存在的一些问题,下面来说一下如何保障验证机制的安全,

在设计安全机制的时候,需要考虑以下的因素:

应用程序所提供功能的安全程度

用户对不同类型的验证控制的容忍和接受程度

支持一个不够友好的用户界面系统所需的成本

竞争性解决方案相对于应用程序可能产生的收入方面的金融成本或它所保护资产的价值

具体方法如下:

1)  使用可靠的证书(强密码,唯一的用户名,随机)

2)  安全处理证书(使用HTTPS加载登录表单)

3)  正确确认证书

4)  防止信息泄露

5)  防止蛮力攻击

6)  防止滥用密码修改功能

7)  防止滥用账户恢复功能

8)  日志,监控与通知

 

转载于:https://www.cnblogs.com/yonghegn/p/9397450.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251074.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ES5-拓展 原型链、继承、类

Symbol不是构造函数 Object不是原型是实例对象 他的构造器继承原型上的构造器 undefined是未定义 null是空指针 一、原型链 1. 函数也是实例对象 2. 构造函数Object是由Function构造出来的 3. 有一种说法是,原型链的终点是null Object.prototype.__proto__指向nul…

spring boot 加载application配置文件

这就要注意了 转载于:https://www.cnblogs.com/huochaihe/p/9397849.html

javascript --- 防抖与节流

先做一个监听鼠标移动的base: <style>#content{height:150px;width:200px;text-align:center;color:#fff;background-color:#ccc;font-size: 70px;} </style> <div id"content"></div> <script>let content document.getElementById…

DOM-9 【实战】模块化开发Todolist(面向过程)

模块化分类 按dom结构划分按功能划分&#xff08;组件化开发&#xff09; 模块与模块之间可以相互依赖&#xff0c;但互不影响 模块&#xff1a;IIFE赋值给一个变量&#xff0c;当引入模块时&#xff0c;IIFE会立即执行 单标签闭合才符合W3C规范display、position放在上面css是…

DOM-10 面向对象开发Todolist

将插件配置项写在html的div里&#xff0c;data-config自定义属性&#xff0c;外单引号&#xff0c;内双引号&#xff08;内部是JSON字符串&#xff09; <div class"todo-wrap" data-config{"plusBtn":"j-show-input","inputArea":…

Ansible基础概述

一、Ansible简介 Ansible基于Python语言实现&#xff0c;由paramiko和PyYAML两个关键模块构建。Ansible的编排引擎可以出色地完成配置管理&#xff0c;流程控制&#xff0c;资源部署等多方面工作。Ansible公司负责Ansible开源软件的维护&#xff0c;管理。一般软件的更新大概每…

DOM-12 【模拟桌面待讲评】鼠标事件深入、点击与拖拽分离、双击事件

鼠标事件深入 点击事件 mousedown mouseupposition: absolute 会将内联元素变为块级&#xff08;比如a&#xff09;a标签的协议限定符&#xff08;伪协议&#xff0c;防止跳转和刷新&#xff0c;让href不生效&#xff09;&#xff0c;javascript:;&#xff0c;可以让点击和拖…

scrapy的操作

转载于:https://www.cnblogs.com/mengqingjian/p/8337772.html

Devexpress xaf针对某个用户登录后在面板中设置导航无效的解决方法

Devexpress xaf框架生成的项目默认情况下导航栏是显示在左侧&#xff0c;有时候我们用某个账户登录后&#xff0c;发现导航栏无法显示在左侧&#xff0c;操作十分不方便。我们可以去数据库删除当前登录用户的自定义布局 解决方法如下: 1、查询PermissionPolicyUser用户表&#…

DOM-13 【实战】输入及状态改变事件、京东搜索框

模块化 IIFE window.onload function () {init() }function init() {keySearch()others() // 多人开发的模块 }var keySearch (function () {var searchKw document.getElementById(J_search_kw),autoKw document.getElementById(J_autoKw),recomKw JSON.parse(document…

吴恩达“机器学习”——学习笔记二

定义一些名词 欠拟合&#xff08;underfitting&#xff09;&#xff1a;数据中的某些成分未被捕获到&#xff0c;比如拟合结果是二次函数&#xff0c;结果才只拟合出了一次函数。 过拟合&#xff08;overfitting&#xff09;&#xff1a;使用过量的特征集合&#xff0c;使模型过…

Http 概述

Http是可靠的数据传输协议。资源Web服务器是Web资源&#xff08;resource&#xff09;的宿主。包括静态文件以及动态的内容。 媒体类型Http对每种需要由web传输的对象都打上了名为MIME类型的数据格式标签。主要的mime类型: text/htmltext/plainimage/jpegimage/gifvideo/quickt…

DOM-14 【实战】解决事件代理和鼠标移动事件的窘态

鼠标的滑入滑出 案例 事件现象应用场景mouseover/mouseout绑定在父元素时&#xff0c;对她的所有子元素&#xff0c;事件都生效dom结构简单mouseenter/mouseleave只对她绑定的元素有效&#xff0c;对window绑定无效dom结构简单mousemove长触发dom结构复杂// 绑定在父元素上 /…

javascript --- 再读作用域和闭包

执行环境: // 定义了变量或函数有权访问的其他数据,决定了它们各自的行为 // 每个执行环境都有一个与之关联的变量对象 // 执行环境中定义的所有变量和函数都保存在这个变量中执行环境与函数: // 每个函数都有自己的执行环境,当执行流进入一个函数时,函数的环境就会被推入一个…

DOM-15/16【实战】鼠标行为预测技术

鼠标预测行为动作复杂&#xff0c;使用事件代理得不偿失&#xff0c;在数量有限的情况下&#xff0c;使用循环绑定更好用户从menu斜着向右下角滑入时&#xff0c;可能是进入main&#xff0c;也可能是要选择子菜单&#xff0c;在判断前先做延迟如何判断用户进入main的意图&#…

ES6-1 ES6版本过渡历史

一 历史 HTML HTML 1, HTML 2, HTML 3 1991-1997 IETF(the Internet Engineering Task Force) 国际互联网工程任务组1997.1 HTML3.2 W3C JavaScript 1995 liveScript(后改名为JavaScript1996年改名)1996 javascript 1.0 1.1;1997 Jscript1997.6 ECMAScript 1.01998.6 ECMAS…

Django-model进阶

知识预览 QuerySet中介模型查询优化extra整体插入回到顶部QuerySet 可切片 使用Python 的切片语法来限制查询集记录的数目 。它等同于SQL 的LIMIT 和OFFSET 子句。 1>>> Entry.objects.all()[:5] # (LIMIT 5)>>> Entry.objects.all()[5:10] # (OFFSE…

ES6-2 块级作用域与嵌套、let、暂行性死区

注意&#xff0c;写在开头 function test(x 1) {var x // 不报错console.log(x) } function test1(x 1) {let x 10 // 报错console.log(x) }let的变量名不可以和参数中的名称相同。而var并不限制&#xff0c;说白了就是希望你规范使用变量名。 形参原则上数组函数内部的临…

常用的操作系统知识

为什么要有操作系统 现代计算机系统是由一个或者多个处理器&#xff0c;主存&#xff0c;磁盘&#xff0c;打印机&#xff0c;键盘&#xff0c;鼠标显示器&#xff0c;网络接口以及各种其他输入&#xff0c;输出设备组成的复杂系统&#xff0c;每位程序员不可能掌握所有系统实现…

vue --- 使用中央事件总线(bus)实现跨组件通信

使用Bus实现跨组件传输须注意以下3点: 1.需要创建一个空的Vue实例(bus),来作为中间站 2.使用bus.emit来发送事件3.使用bus.emit来发送事件 3.使用bus.emit来发送事件3.使用bus.on来监听事件(在钩子created中监听) 代码如下: <!DOCTYPE html> <html> <head>…