直播app源码,如何提升用户登录验证的安全性? - 云豹科技

news/2025/10/11 9:40:39/文章来源:https://www.cnblogs.com/yunbaomengnan/p/19134318

直播app源码,如何提升用户登录验证的安全性?

1.概述

目前开发的直播app源码很多,其中最基本的功能是用户登录,这是每一个系统基本上都有的功能,但一般系统对于这个功能的实现都比较简单,无法达到安全的目的。如何正确的对用户名密码进行验证,防止用户名、密码泄露,防止暴力破解,这是一个需要大家关心的问题。

2.解决办法

直播app源码要完美的解决以上问题,需要了解加密、解密、数据安全、网络安全等相关知识,网上也有很多的解决方案。本文结合实际应用,给出一个例子,供大家参考。

2.1 防止明文传输

2.1.1 采用安全HTTPS(SSL/TLS)协议
直播app源码采用安全HTTPS(SSL/TLS)协议,而不是普通的HTTP协议,这样前后端传输的内容就是加密后内容了,解决了明文传输的问题,可以很好地防止非法嗅探,

2.1.2 加强前后端安全处理
若有框架支持用户、密码的,则可直接用框架的用户登录、验证功能。

2.1.2.1 前端处理及传输
前端页面得到用户输入的用户名、密码、验证码后,采用Java script函数计算出密码的哈希值,然后调用后台方法进行用户验证,将用户名、密码哈希值、验证码作为后台方法的参数传入。

密码哈希值=哈希(密码明文+盐值(用户名+网站特有的字符串(如域名)))
2.1.2.1 后端验证方法
从数据库取出用户的密码哈希值和对应盐值
将盐值混入前端传入的密码哈希值,并且使用同样的哈希函数进行加密
比较上一步的结果和数据库储存的哈希值是否相同,如果相同那么密码正确,反之密码错误
2.1.2.1 后端数据库存储
数据库存储:用户名、盐值、密码哈希值
密码哈希值 = 哈希(前端传入的密码哈希值) = 哈希(密码明文+盐值(用户名+网站特有的字符串(如域名)))
盐值=随机值
盐值的一些注意事项:

每一用户应有不同的盐值(最常见的错误就是在多次哈希加密中使用相同的盐值或者太短的盐值)
用户创建账户或每次修改密码时都应该重新生成新的盐值进行加密
为了使攻击者无法构造包含所有可能盐值的查询表,盐值必须足够长。一个好的做法是使用和哈希函数输出的字符串等长的盐值比如SHA256算法的输出是256bits(32 bytes)那么盐值也至少应该是32个随机字节。

2.2 防止暴力破解

防止暴力破解,可在前端登录界面加入图片验证,登录时要求同时输入用户名、口令、验证码,这样就很好地防止了别人采用程序或机器人进行字典攻击、暴力攻击(通过采用尝试用户名、口令进行系统登录,从而获取用户信息)。

图片验证可以采用Google Kaptcha组件实现,在前端点击img组件时,调用后台Controller方法生成图像二进制流,直接更新图像内容。后台session中存储了正确的验证码字符串,与页面返回的tryCode比较。若一致跳转到新的页面,否则返回当前页面是,并显示错误信息。

前端关键示例代码如下所示:

<body><!-- 提示 --><h3 th:text="${info}"></h3><div><!-- 后面添加参数起到清除缓存作用 --><img alt="验证码" onclick="this.src='/defaultKaptcha?d='+new Date()*1" src="/defaultKaptcha" /></div><form action="imgvrifyControllerDefaultKaptcha" > <input type="text" name="tryCode" /><input type="submit" value="提交" class="btn btn-success"></input></form>
</body>
后台验证码生成及验证关键代码:/*** 2、生成验证码* @param httpServletRequest* @param httpServletResponse* @throws Exception*/@RequestMapping("/defaultKaptcha")public void defaultKaptcha(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)throws Exception {byte[] captchaChallengeAsJpeg = null;ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();try {// 生产验证码字符串并保存到session中String createText = defaultKaptcha.createText();httpServletRequest.getSession().setAttribute("rightCode", createText);// 使用生产的验证码字符串返回一个BufferedImage对象并转为byte写入到byte数组中BufferedImage challenge = defaultKaptcha.createImage(createText);ImageIO.write(challenge, "jpg", jpegOutputStream);} catch (IllegalArgumentException e) {httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND);return;}// 定义response输出类型为image/jpeg类型,使用response输出流输出图片的byte数组captchaChallengeAsJpeg = jpegOutputStream.toByteArray();httpServletResponse.setHeader("Cache-Control", "no-store");httpServletResponse.setHeader("Pragma", "no-cache");httpServletResponse.setDateHeader("Expires", 0);httpServletResponse.setContentType("image/jpeg");ServletOutputStream responseOutputStream = httpServletResponse.getOutputStream();responseOutputStream.write(captchaChallengeAsJpeg);responseOutputStream.flush();responseOutputStream.close();}/*** 3、校对验证码* @param httpServletRequest* @param httpServletResponse* @return*/@RequestMapping("/imgvrifyControllerDefaultKaptcha")public ModelAndView imgvrifyControllerDefaultKaptcha(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse) {ModelAndView andView = new ModelAndView();String rightCode = (String) httpServletRequest.getSession().getAttribute("rightCode");String tryCode = httpServletRequest.getParameter("tryCode");System.out.println("rightCode:"+rightCode+" ———— tryCode:"+tryCode);if (!rightCode.equals(tryCode)) {andView.addObject("info", "错误的验证码");andView.setViewName("index");} else {andView.addObject("info", "登录成功");andView.setViewName("success");}return andView;}

以上就是直播app源码,如何提升用户登录验证的安全性?, 更多内容欢迎关注之后的文章

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

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

相关文章

2025 年国内包装袋厂家最新推荐排行榜:聚焦绿色环保与定制化,精选优质企业助力采购决策无纺布/降解/塑料/复合/可定制化包装袋厂家推荐

在商品经济飞速发展的当下,包装袋作为产品保护、品牌展示的关键载体,其品质与性能直接影响企业产品竞争力。当前市场中,包装袋品牌数量繁多,既有深耕行业多年的老牌企业,也有新兴的创新品牌,产品质量、环保性能、…

快排模板1(lomuto分区)

#include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; int n,a[maxn];void quicksort(int l,int r){if(l>r||l==r) return;int tmp=a[r];int i,j;i=j=l;while(j<r){if(a[j]>tmp){j++;…

下载模板

下载模板前提:在resource目录下创建template文件夹,存放模板文件: 以下方法无入参:try { // 模板文件路径 - 使用classpath方式访问资源文件 String templatePath = "template/xxx模板.docx"; …

Redis Stack搭建

参考 https://redis.io/docs/latest/operate/oss_and_stack/install/archive/install-stack/docker/环境查看 系统环境# cat /etc/redhat-release Rocky Linux release 9.3 (Blue Onyx) # uname -a Linux Rocky9Milvu…

CISA与USCG在关键基础设施威胁狩猎中发现网络安全改进领域

CISA和美国海岸警卫队通过对美国关键基础设施组织进行主动威胁狩猎,识别出多个网络安全风险领域,包括凭据存储不当、网络分段不足和日志记录不充分等问题,并提供了具体的技术缓解建议。CISA与USCG在关键基础设施威胁…

2025年智慧物联与电子信息工程国际学术会议(IoTEIE 2025)

2025年智慧物联与电子信息工程国际学术会议(IoTEIE 2025) 2025 International Conference on Artificial Intelligence of Things and Electronic Information Engineering 在科技飞速发展的当下,物联网与电子信息工程…

重磅更新:Claude Code 现在支持插件啦!!

大家好,我是R哥。 刚 Anthropic 宣布了一个重磅消息:Claude Code 现在正式支持插件(Plugins)啦! 这个插件不是指 IDEs 中的插件,而是指命令行窗口中的 /plugin 插件命令,通过这一条命令就能一键装好别人封装好的…

标签的关系,注释,标题标签和段落标签,文本格式化标签

<html>和<head><body>是父子关系,<head>和<body>是并列关系 ctrl+/添加注释 标题标签:<h2>~<h6>没有使用次数限制 段落标签: (双标签)

笔记本使用摄像头显示“你的相机报告设备上的开关或按钮已阻止或关闭它”(特别是联想笔记本)

如果驱动权限这类都没问题,那么看看摄像头旁边或者电脑键盘侧面有没有小开关物理锁住了。https://www.bilibili.com/video/BV1QbmiY1E2p/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_…

牛客刷题-Day11

动态规划1:线性dp、背包问题,区间 https://ac.nowcoder.com/acm/contest/24213?from=acdiscuss牛客刷题-Day11 今日刷题:\(1051-1055\) 1051 [HAOI2012]音量调节 题目描述 一个吉他手准备参加一场演出。他不喜欢在…

MySQL - ERROR 2002 (HY000): Cant connect to local MySQL Server through socket /tmp/mysql.sock

MySQL - ERROR 2002 (HY000): Cant connect to local MySQL Server through socket /tmp/mysql.sock这个报错说明 MySQL 客户端没有使用 TCP/IP 去连接远程数据库,而是默认尝试用 UNIX socket 文件 /tmp/mysql.sock 去…

网络编程实践笔记_1_阿贝云_免费云服务器_简单GET_POST实现

网络编程实践 阿贝云 免费云服务器 GET POST尝试一下网络编程,除了局域网版的TCP UDP直接通讯,由于小程序或者更广泛使用需求,想尝试从互联网直接读取存储信息。 直接跳过了本地服务器模拟,选用阿贝云 https://ww…

直播平台开发,如何实现CPU内存使用情况的检测? - 云豹科技

直播平台开发,如何实现CPU内存使用情况的检测?案例需求说明现在每隔3秒对电脑的cpu和内存使用情况进行检测,内存使用率或cpu使用率超过90%给出警告代码如下(仅供参考,案例适用于作者自己MBP)echo "开始监控…

实用指南:FPGA学习笔记——图像处理之对比度调节(直方图均衡化)

实用指南:FPGA学习笔记——图像处理之对比度调节(直方图均衡化)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…

第十二届行为与社会计算国际会议(BESC)暨2025年机器学习与社会计算国际研讨会(MLSC 2025)

第十二届行为与社会计算国际会议(BESC)暨2025年机器学习与社会计算国际研讨会(MLSC 2025) 2025 International Symposium on Machine Learning and Social Computing 2025年机器学习与社会计算国际研讨会(MLSC 20…

注解@RequestParam与@RequestBody的使用场景

一、前言 一直有这么一个疑问:在使用postman工具测试api接口的时候,如何使用 json 字符串传值呢,而不是使用 x-www-form-urlencoded 类型,毕竟通过 key-value 传值是有局限性的。假如我要测试批量插入数据的接口呢…

2025 最新推荐!大连深海原种海参源头厂家权威榜:聚焦全产业链优质供应商及选购指南青海淡干/青海围堰/青海圈养/青海吊笼/青海网箱/青海大棚海参厂家推荐

当前海参市场规模持续扩大,但行业乱象成为消费痛点:浅海养殖参冒充深海原种参、加工环节添加防腐剂、溯源体系缺失等问题频发,虚假宣传更让消费者难以辨别品质。随着 “自然鲜养 4.0 时代” 到来,消费者对 “高营养…

博客导航

做题记录 / 思考瓶颈目录(密码均为教练口头禅,\(^*\) 表示已公开,\(^\dag\) 表示已完结):Duel with StayAlone(决斗历史) \(^{*\dag}\)Hey Gift:逃亡公路(2023 年 NOIP 前杂题和互测题杂做) \(^{*\dag}\)Hey…

金碟KIS迷你版v12.0sp1注册补丁/金蝶迷你版破解

程序下载:https://www.123pan.com/s/OxpZVv-2MX8v.html 提取码:ZOBK 补丁下载:https://www.c5d.cn/thread-166-1-1.html声明:本程序收集于网络,仅供站内用户学习交流使用,商用后果自负,请在下载后24小时内自行删…

详细介绍:Hadess入门到实战(3) - 如何管理Npm制品

详细介绍:Hadess入门到实战(3) - 如何管理Npm制品pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…