首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >创建用户帐户时记录和记录暴力破解攻击的正确方法

创建用户帐户时记录和记录暴力破解攻击的正确方法
EN

Stack Overflow用户
提问于 2016-07-11 17:18:37
回答 1查看 244关注 0票数 1

我们有以下用例:

用户可以通过填写身份验证表,填写自己的id,名字,姓氏和道布来自助注册商业账号。ID是只有用户提前知道的东西。用户有5次尝试匹配他们的所有信息

我们计划在存储验证尝试的数据库中维护几个表

代码语言:javascript
运行
AI代码解释
复制
Table 1 columns: id, attempts
Table 2 columns: id, fname, lname, dob

表1和表2具有一对多关系。这是一个例子,说明如果用户在锁定之前5次尝试猜测名字、姓氏和道布,会发生什么。应用程序检查表1的尝试列,如果特定id的值为5或大于5,则(具有该特定id的)用户帐户将被视为锁定。

代码语言:javascript
运行
AI代码解释
复制
table 1
id   attempts
1234  5

table 2
id    fname   lname  dob
1234  john     doe   19900101
1234  jane     doe   19900101
1234  jason    doe   19900101
1234  john     dae   20010102
1234  roger    smith 19960101

上述方法的问题在于,我们只通过id来跟踪失败的尝试。如果用户试图更改id并进行攻击怎么办?通过保持名字,姓氏和道布相同,并猜测id?

也许我需要重新考虑验证表的设计和我的方法来解决用户试图猜测id的问题??或者,有没有更好的方式来思考这个问题?

编辑:这是一个带有前端客户端的REST Api url。所以验证码可能不会保护API??

EN

回答 1

Stack Overflow用户

发布于 2016-07-13 00:46:56

您说得对,"secret“ID添加的安全价值很小,因为它是可以被暴力强制的参数。如果攻击者知道第一个,也就是最后一个,道布,那么他们就可以遍历it,直到它验证。

更好的方法是:在来自某个地址的5次无效尝试后,锁定一个IP地址。这防止了来自一台(或几台)计算机的幼稚类型的蛮力强迫。

最好:为了防止僵尸网络或自动化系统以脚本方式进行暴力强制,然后使用a 是强制人类注册的传统安全模式

如果ID是“秘密”,那么您还应该确保它足够长(例如,不仅仅是四位数)。也许8个字母数字可以为您在这里愿意容忍的风险级别提供足够的复杂性?取决于您的风险承受能力和系统/数据的敏感度。

编辑:要解决保护REST API的问题...如果您希望只允许来自授权GUI的rest API提交,那么您可以使用由GUI提交的nonce,然后由REST服务进行验证。(类似于CSRF保护。)如果您希望允许从其他程序立即提交到API,这基本上是促进暴力破解攻击的秘诀。大多数主要的在线服务都不提供这样的注册API。但您仍然可以使用长/复杂ID和锁定IP地址。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38312644

复制
相关文章
Excel数据一键转置
Excel里有选择性粘贴,转置;PQ里当然也不能少,而且就是一个按钮点一下。先上数据:
大海Power
2021/08/30
5020
python转置矩阵代码_python 矩阵转置[通俗易懂]
5.矩阵转置 给定:L=[[1,2,3],[4,5,6]] 用zip函数和列表推导式实现行列转def transpose(L): T = [list(tpl) for tpl in zip(*L)] return T
全栈程序员站长
2022/08/22
5.7K0
python中矩阵的转置_[转]Python中的矩阵转置[通俗易懂]
arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
全栈程序员站长
2022/09/03
3.6K0
如何理解转置卷积(transposed convolution)
转置卷积也被称为反卷积,常被用用于CNN中的上采样操作,比如分割任务,或GAN网络中。反卷积并不是常规卷积的完全逆操作,反卷积也起不到根据输出特征以及对应的卷积核,恢复原始输出的作用,它最多的作用就是有可学习参数的上采样操作,仅此而已。 同时,反卷积操作并没有把正向卷积输出,对应的卷积核拿过来做转置使用,而是多了几个卷积核而已。 此外,即便是把正向卷积输出对应的卷积核拿过做反卷积,它也恢复不出来原来的参数,恢复原来参数这种操作看起来并没有太大意义,因为只是想做上采样而已。 这里与常规卷积的区别主要体现在:
chaibubble
2021/02/04
1.7K0
python一维数组转置_python矩阵转置[通俗易懂]
对于有参数的transpose:对于三维数组,原型数组的参数应该是(0,1,2),对应的是外行,子行,子列,如果变成(1,0,2)就是将外行变成子行,子行变成外行。对于元素索引也发生同样改变,比如原来的元素3的索引是(0,1,1),转换后就是(1,0,1)
全栈程序员站长
2022/08/22
2.1K0
python实现矩阵的转置_Python实现矩阵转置的方法分析
前几天群里有同学提出了一个问题:手头现在有个列表,列表里面两个元素,比如[1, 2],之后不断的添加新的列表,往原来相应位置添加。例如添加[3, 4]使原列表扩充为[[1, 3], [2, 4]],再添加[5, 6]扩充为[[1, 3, 5], [2, 4, 6]]等等。
全栈程序员站长
2022/08/23
1.9K0
python实现矩阵的转置_Python实现矩阵转置的方法分析
Oracle 行列转置
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/53906321
用户1148526
2019/05/25
1.6K0
矩阵转置(函数)
叶茂林
2023/07/28
2220
Excel实战技巧105:转置数据的3种方法
所谓转置数据,就是将数据从水平转变成垂直,或者从垂直转变成水平。换句话说,在Excel工作表中,将行中的数据转变到列中,将列中的数据转变到行中。下面将展示3种转置数据的方法:
fanjy
2021/07/12
6K0
稀疏矩阵转置
矩阵是线性代数中的一个知识,刚开始学习的时候可能感觉不到它有什么用处,最初的感觉就是对二维数据的操作。其实现实生活中矩阵的用处太大了,设计领域相当的广泛。在此只讨论稀疏矩阵的转置问题;
大黄大黄大黄
2018/09/14
1.7K0
稀疏矩阵转置
[每日一题]矩阵转置(1242)
题目描述 输入N*N的矩阵,输出它的转置矩阵。 输入 第一行为整数N。 接着是一个N*N的矩阵。 输出 转置矩阵 样例输入 2 1 2 1 2 样例输出 1 1 2 2 PS:如果你有想法或者想看别人的想法就回复题号1242,获得链接,将你的想法写进去,不懂的朋友也可以通过回复题号1242获得链接查看别人的想法和思路哦! 另外,有兴趣的同学还可以加入C语言网官方微信群,一起讨论C语言 有找密码或者其他问题也可以到里面找相关人员解决 通过加小编:dotcppcom 备注:C语言网昵称(需要先在C语言
编程范 源代码公司
2018/04/18
1.3K0
10:矩阵转置
10:矩阵转置 总时间限制: 1000ms 内存限制: 65536kB描述 输入一个n行m列的矩阵A,输出它的转置AT。 输入第一行包含两个整数n和m,表示矩阵A的行数和列数。1 <= n <= 100,1 <= m <= 100。 接下来n行,每行m个整数,表示矩阵A的元素。相邻两个整数之间用单个空格隔开,每个元素均在1~1000之间。输出m行,每行n个整数,为矩阵A的转置。相邻两个整数之间用单个空格隔开。样例输入 3 3 1 2 3 4 5 6 7 8 9 样例输出 1 4 7 2 5
attack
2018/04/03
1.9K0
转置卷积详解
  前面文章对卷积做了讲解,感觉既然重新整理,就将系列概念整体做个梳理,也算是将自己知道的所有东西拿来献丑把。   转置卷积(Transposed Convolution)是后来的叫法,一开始大家都是称逆卷积/反卷积(Deconvolution),这个概念是在图像分割任务中被提出来的,图像分割需要逐像素的操作,对每一个像素做一个分割,将其归类到不同的物体当中。   这个任务大家很自然的想要使用卷积神经网络来完成,那就得先使用卷积神经网络提取特征,但是卷积神经网络中的两大主要构件,卷积层和下采样层会使得图像的尺寸不断缩小。这个就与逐像素的分类不符,因为逐像素分割的话是需要输出和输入大小是一致的。   针对这个问题,有人提出了先使用卷积核下采样层逐层的提取特征,然后通过上采样再将特征图逐渐的恢复到原图的尺寸。而这个上采样一开始就是通过反卷积来实现的。如果说卷积核下采样的过程特征图是变小的,那么上采样之后特征图应该变大。   我们应该熟悉卷积的输出尺寸公式 o u t = ( F − K + 2 P ) / s + 1 out=(F-K+2P)/s+1 out=(F−K+2P)/s+1,其中F表示输入特征图的尺寸,K表示卷积核的尺寸,P表示padding,S表示卷积的步长。我们都通过这个公式来计算卷积的输出特征图尺寸。举例来说明,一个4×4的输入特征图,卷积核为3×3,如果不使用paddng,步长为1,则带入计算 o u t = ( 4 − 3 ) / 1 + 1 out=(4-3)/1+1 out=(4−3)/1+1为2。   我们已经在im2col算法的介绍中讲解了卷积的实现,实际上这个步骤是通过两个矩阵的乘法来完成的,我们不妨记为 y = C x y=Cx y=Cx,如果要上采样,我们希望给输出特征图乘一个参数矩阵,然后把尺寸还原回去,根据数学知识,我们给特征图矩阵 y y y左乘一个{C^T},就能得到 C T y = C T C x C^Ty=C^TCx CTy=CTCx, C C C的列数等于 x x x的行数, C T C C^TC CTC的行数和列数都等于x的行数,乘完之后,得到的结果与 x x x形状相同。这就是转置卷积名字的来源。有一些工作确实是这样实现的。   我们也能很自然的得出结论,我们不需要给输出特征图左乘 C T C^T CT,显然只要和这个矩阵形状相同,输出的结果就和原特征图尺寸相同,而且这个操作同样可以使用卷积来实现,那我们只要保证形状一致,然后参数我们可以自己训练,这样尺寸的问题解决了,而且特征的对应也有了,是可以训练的,一举两得。 im2col讲解的内容,卷积是 ( C o u t , C i n ∗ K h ∗ K w ) (C_{out},C_{in}*K_h*K_w) (Cout​,Cin​∗Kh​∗Kw​)的卷积核乘 ( C i n ∗ K h ∗ K w , H N ∗ W N ) (C_{in}*K_h*K_w,H_N*W_N) (Cin​∗Kh​∗Kw​,HN​∗WN​)的特征图,得到 ( C o u t , H N ∗ W N ) (C_{out},H_N*W_N) (Cout​,HN​∗WN​)的结果。现在对卷积核做一个转置 ( C i n ∗ K h ∗ K w , C o u t ) (C_{in}*K_h*K_w,C_{out}) (Cin​∗Kh​∗Kw​,Cout​)乘 ( C o u t , H N ∗ W N ) (C_{out},H_N*W_N) (Cout​,HN​∗WN​)得到一个 ( C i n ∗ K h ∗ K w , H N ∗ W N ) (C_{in}*K_h*K_w,H_N*W_N) (Cin​∗Kh​∗Kw​,HN​∗WN​)的特征图。   除了以上内容这里还有一点其他需要补充的东西,比如在caffe中除了im2col函数之外,还有一个函数是col2im,也就是im2col的逆运算。所以对于上面的结果caffe是通过col2im来转换成特征图的。但是col2im函数对于im2col只是形状上的逆函数,事实上,如果对于一个特征图先执行im2col再执行col2im得到的结果和原来是不相等的。   而在tensorflow和pytorch中,这一点是有差异的,两者是基于特征图膨胀实现的转置卷积操作,两者是是通过填充来进行特征图膨胀的,之后可能还会有一个crop操作。之所以需要填充,是因为想要直接通过卷积操作来实现转置卷积,干脆填充一些值,这样卷积出来的特征图尺寸自然就更大。   但是两者从运算上来讲都无法对原卷积进行复原,只是进行了形状复原而已。   到了最后就可以讨论形状的计算了,转置卷积是卷积的形状逆操作,所以形状计算就是原来计算方式的逆函数。 o u t = ( F − K + 2 P ) / s + 1 out
全栈程序员站长
2022/06/24
7960
转置卷积详解
Pytorch 转置卷积
卷积不会增大输入的高和宽,通常要么不变,要么减半。而转置卷积则可以用来增大输入高宽。
全栈程序员站长
2022/06/24
2.2K0
Pytorch 转置卷积
python转置矩阵函数_对python 矩阵转置transpose的实例讲解
image_vector_len = np.prod(image_size)#总元素大小,3*55*47
全栈程序员站长
2022/08/22
1.5K0
numpy矩阵转置
numpy矩阵转置只需要这样子: import numpy as np import fractions # 设置以分数形式显示 np.set_printoptions(formatter={'all': lambda x: str(fractions.Fraction(x).limit_denominator())}) # 定义矩阵 c = np.array([[-1/np.sqrt(2), 0, 1/np.sqrt(2)], [0, 1, 0], [1/np.sqrt(2), 0, 1/np.sqr
灯珑LoGin
2022/10/31
8410
HAWQ中的行列转置
该文介绍了如何在PostgreSQL中实现交叉表查询,包括定义表、定义列、创建索引、查询结果集合并以及应用函数处理结果集等步骤。同时介绍了如何使用PL/SQL和SQL进行交叉表查询,以及如何使用PostGIS进行空间数据查询和处理。
用户1148526
2018/01/03
1.7K0
python转置矩阵画流程图_python 矩阵转置transpose
我们对arr进行transpose转置,arr2 = arr.transpose((1,0,2)),结果是这样:
全栈程序员站长
2022/08/24
1.6K0
替换与转置函数
今天要跟大家分享两个经常会用到的函数——替换与转置函数! ▽▼▽ excel中的替换函数有两个:substitute/replace 转置函数:TRANSPOSE 替换函数: substitute函数的语法格式 =substitute(text,old_text,new_text,[instance_num]) =substitute(需要替换的文本,旧文本,新文本,第N个旧文本) 这里的最后一个参数[instance_num]是指定需要替换第几次出现的重复对象,一般可以省略(因为我们通常都是替换全部的目
数据小磨坊
2018/04/10
1.6K0
替换与转置函数
卷积与转置卷积
转置卷积又称微步卷积(“微步”的含义指:新的步长为1,而之前的步长为2,使得转置卷积的滑窗处理相比较卷积的“小”。),可以视作传统卷积操作的一种“逆向”传递过程;并且,转置卷积受“正向”卷积的参数约束,即步长stride和零填充(zero-padding)。下面给出stride=1和padding=0、stride=1和padding=1、stride=2和padding=0、stride=2和padding=1的卷积和转置卷积例子。
全栈程序员站长
2022/06/24
6110
卷积与转置卷积

相似问题

C中声明的数组与未声明的数组

30

C中数组的声明

34

如何声明C字符串数组

10

声明字符串数组的Visual C++

40

声明字符串数组的visual C++

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档