验证码攻防对立的实质

短信验证码和图片验证码的区别就不用说了,大家都知道。

在回答前面的问题前,咱们需要知道对立的实质:

我网站使用了短信验证码,还需要配图片验证码?

黑灰产假如想破解图片验证码(后面说的“验证码”,都指的是“图片验证码”),首先第一步,要完结“辨认”这个才干,也就是,它需要有才干知道这张图片上的答案目标在哪里。在这块,咱们说的“辨认对立”的实质就是咱们对立黑灰产的工具。 实际上,真实的从技术底层上来说,验证码对立的是黑灰产的人工智能,对立的是卷积神经网络技术。在咱们知道这个实质之后,咱们的验证码从哪些点去做更新、做迭代,才干有效地去对立它。

我网站使用了短信验证码,还需要配图片验证码?

假如要防备黑灰产,那么网站需要在感知层面进行加强,而感知层面,只要图片验证码才干完成,因为感知层面包括五个维度

行为数据:验证过程中发生的键盘/鼠标/触屏等行为数据

终端风险:异常设备环境,模拟器、自动化工具,无头浏览器等

数据核算:各种验证方法的通过率,失利率,调用量

安全策略:检测攻击行为的安全策略,并能依据风险情况对验证码做出调整

预警目标:各维度的目标核算,监视每种验证方法的攻防情况

而这五个维度如何体现在验证码上呢?** 这个就是图片验证码的“变” ** :

我网站使用了短信验证码,还需要配图片验证码?

图片验证码的“变”

1.动态改变前端加密算法

在安全通讯模块,黑灰产在破解验证码的时分,其可能会首要去考虑逆向网站的JS 、知道通讯协议以及参数获取,这是攻防对立比较重要的一环。

解决方案的话,能够在防御云放置一个安全加密中心,而安全加密中心会定时地、自动化地生成新的加密算法,把代码重新混杂一遍,然后定时推送到CDN上面。CDN上面放置的是验证码以及验证的JS文件,而这,主要是由客户端来加载。在这种动态更新的机制之下,即便黑灰产获取到某个版本的验证码JS文件,并做了逆向破解之后,会在下一个更新窗口到来之后失效。假如黑灰产想完成彻底的脱机运行,就需要持续地去更新,去破解这些JS。这关于黑灰产来说,本钱极高。

我网站使用了短信验证码,还需要配图片验证码?

2.图片改变

图片的改变如何结合AIGC的才干,变化万千

我网站使用了短信验证码,还需要配图片验证码?

3.字体及作用的改变

除上述之外,就是验证元素的管理。验证码拥有持续改变的才干,能够动态的去更新这些基础元素。这儿的“基础元素”,主要是字体的作用和字体的变化。

我网站使用了短信验证码,还需要配图片验证码?

4.其他作用的改变

包括图标元素的改变、验证方法动态安装卸载、验证码方法和组合的实时变化等等

我网站使用了短信验证码,还需要配图片验证码?

综上来说,尽管短信验证码提供了必定的安全性,但图片验证码能够进一步避免恶意程序或机器人的攻击。

图片验证码通常要求用户正确地辨认和输入一个难以辨认的图画中的文字或数字。这样的图画关于机器学习算法和自动化脚本来说比较困难,因此能够有效地区别人类用户和自动化程序。

示例代码

import requests
# 配置顶象的密钥和验证码ID
DOOV_API_KEY = 'your_doov_api_key'
CAPTCHA_ID = 'your_captcha_id'
# 请求验证码
def get_captcha():
    url = 'https://doovos.dooioo.com/captcha/preCaptcha'
    payload = {
        'captchaId': CAPTCHA_ID
    }
    headers = {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer {}'.format(DOOV_API_KEY)
    }
    response = requests.post(url, json=payload, headers=headers)
    result = response.json()
    return result['captchaImage']
# 验证用户输入的验证码
def verify_captcha(captcha_token, captcha_text):
    url = 'https://doovos.dooioo.com/captcha/verifyCaptcha'
    payload = {
        'captchaId': CAPTCHA_ID,
        'captchaToken': captcha_token,
        'captchaText': captcha_text
    }
    headers = {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer {}'.format(DOOV_API_KEY)
    }
    response = requests.post(url, json=payload, headers=headers)
    result = response.json()
    return result['success']
# 获取验证码图片并显示给用户
captcha_image = get_captcha()
print('验证码图片链接:', captcha_image)
# 假定用户在表单中输入了验证码文本和验证码令牌
user_captcha_text = input('请输入验证码文本: ')
user_captcha_token = input('请输入验证码令牌: ')
# 验证用户输入的验证码
verification_result = verify_captcha(user_captcha_token, user_captcha_text)
if verification_result:
    print('验证码验证成功')
else:
    print('验证码验证失利')

依据不同的编程言语当然会有不同的完成方法,上面是python的示例。不过上面使用的是顶象的验证码库,使用之前,需要先注册顶象的服务并获取相应的API密钥和验证码ID。将示例代码中的”your_doov_api_key”和”your_captcha_id”替换为你自己的值。

以上。