记录--P0事故预警

这篇具有很好参考价值的文章主要介绍了记录--P0事故预警。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助

记录--P0事故预警

背景

某一天,前端小余同学和后端别问我小哥在做登录业务接口对接,出于业务的特殊性和安全性的考虑,她和后端小哥约定“user”相关信息参数需要通过HTTP协议的header传递过来,利用HTTPS协议的头部中的参数可以通过加密传输,从而保证数据的安全性。

开发阶段

确定技术方案之后,小余同学在注册发起请求函数的headers中新增user属性:

export type User = {  
    username: string;  
    password: string;  
};  
const handleRequest = async (userInfo: User, params: Object) => {  
    try {  
        await axios.post('/register-login-secure', params, { headers: { ...userInfo } });  
    } catch (e) {  
        console.error(e);  
    }  
};

这段代码看起来是没有任何问题,对吗?

再看一下前端代码的逻辑:

const Register = () => {  
    const handleRequest = () => {  
        // ...  
    };  
return (  
    <Form>  
        <Form.Item field="username" label="用户名">  
            <Input placeholder="请输入用户名" />  
        </Form.Item>  
        <Form.Item field="password" label="密码">  
            <Input.Password placeholder="请输入密码" />  
        </Form.Item>  
        <Form.Item noStyle>  
            <Button onClick={handleRequest} />  
        </Form.Item>  
    </Form>  
  );  
};

整体看下来没什么问题,但是可以发现username是对用户输入没有做任何校验的,也就是说:无论用户输入什么都可以存在数据库的,这里我们忽略xss攻击。

由于这次的技术方案user信息是通过headers传递的,跟之前的传参有一些出入以及在本地测试的时候,前端和后端在用户名部分随便输入了一串英文字符串作为用户名用于测试,发现没问题于是就提测了。

测试阶段

进入提测阶段之后,测试同学把测试用例甩了过来:

场景一:注册用户名ashui,是否注册成功

场景二:重复注册用户名ashui,是否注册成功

...

测试同学也顺利的通过了所有测试用例,所以就上线了,线上验收也没什么问题,所以大家都早早下班,各回各家,各找各妈。看到这里,大家有发现什么问题?如果有的话,请继续往下看,看看猜想和后续遇到的问题是不是一直的。

事故阶段

距离这次上线已经过去三天了,忽然小余晚上三点半被P0加急电话吵醒,看到群里反馈有用户无法注册,小余瞬间清醒打开电脑复现了一下,发现没问题,群里大家复现都说没问题,但运营同学跟客户反复沟通后,发现客户确实无法注册,于是小余就去sentry监控查看了一下,忽然发现了之前从来没有遇到的报错:

Failed to read the 'headers' property from 'RequestInit': String contains non ISO-8859-1 code point.

小余从这个报错中窥探到一点信息是headers,程序员天生的直觉告诉她可能跟这次上线的技术方案有关,所以她去看了一下HTTP协议的文档.

解决阶段

文档里面有这样一段话:

By default, message header parameters in HTTP ([RFC2616]) messages can not carry characters outside the ISO-8859-1 character set ([ISO-8859-1]). RFC 2231 ([RFC2231]) defines an escaping mechanism for use in MIME headers. This document specifies a profile of that encoding for use in HTTP.

翻译过来就是HTTP headers中不能包含ISO-8859-1以外的字符集。小余恍然大悟,用户输入的是中文的名字,所以赶紧试了一下,发现果然是这个问题,于是跟产品确定用户名的用户输入的规范,以及跟后端小哥修改技术方案。

什么是ISO-8859-1字符集

用于表示文本字符的编码方案。它是国际标准化组织(ISO)制定的字符集之一,于1987年发布。

ISO-8859-1 字符集包含了来自拉丁字母表的字符,主要用于表示西欧语言,如英语、法语、德语、西班牙语等。它是一个单字节字符集(Single-Byte Character Set,SBCS),其中的每个字符都可以用一个字节(8位)进行表示。ISO-8859-1 字符集共定义了256个字符,编号从0到255。

ISO-8859-1 字符集的编码方案被广泛应用于计算机系统和互联网中的文本传输和存储。在该字符集中,ASCII 字符(0-127)与 ASCII 字符集相同,因此 ISO-8859-1 是 ASCII 的一个超集。此外,ISO-8859-1 还包括了其他特定于欧洲语言的字符,如重音符号、希腊字母、货币符号等。

例如,ISO-8859-1 中的一些常见字符包括:

  • 字母:A-Z、a-z
  • 数字:0-9
  • 标点符号:. , ; : ! ? ' " ( ) [ ] { } < > | / \ - + * = # @ $ % & _
  • 特殊字符:© ® ° µ Æ æ Ø ø Å å

ISO-8859-1 字符集的编码方案被广泛支持,包括在操作系统、编程语言、文本编辑器、浏览器等软件和工具中。然而,它仅适用于西欧语言,对于其他非西欧语言的字符,如中文、日文、韩文等,ISO-8859-1 并不适用。对于这些语言,通常使用其他字符集和编码方案,如 UTF-8、UTF-16 等。

需要注意的是,ISO-8859-1 字符集与 Unicode 字符集是不同的概念。Unicode 是一种字符编码标准,旨在为世界上所有的字符提供唯一的标识符,而 ISO-8859-1 是其中的一种字符集,只覆盖了一部分字符。

后续

经过这次事故之后,小余也加强了对HTTP新的理解,在HTTP协议中headers是需要遵循ISO-8859-1字符集规范,也为后续小余成长做了一个警示。

本文转载于:

https://juejin.cn/post/7289343331013001271

如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

 记录--P0事故预警文章来源地址https://www.toymoban.com/news/detail-710678.html

到了这里,关于记录--P0事故预警的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分享一个403界面给大家

    先看效果图(说明:小鬼影会飘来飘去,长时间停留会有小惊喜,具体大家跑一下就知道): 代码如下: PS:发现我用文字写太生硬了,干的噎嗓子,干脆在代码里加注释了。

    2024年02月06日
    浏览(33)
  • 分享一个500页面给大家

    先看效果: 再看代码:

    2024年02月06日
    浏览(39)
  • 分享三个ai写作生成器给大家

    在当今数字化时代,随着人工智能的快速发展,ai写作软件已经成为越来越多人关注的热门话题。这些创新的软件利用机器学习和自然语言处理等技术,能够生成一些好的文章、博客、新闻稿甚至小说等内容,大大地提升了写作的效率和质量。然而,面对众多的ai写作软件选择

    2024年02月16日
    浏览(40)
  • 必做的高收益自媒体平台,分享给大家

    现在市面上的自媒体平台是非常多的,大大小小加起来也有30好几个,但是要说到哪些平台收益比较高,那就不得不提到下面这个几个主流平台,今天就给大家分享一下收益比较高的几个主流平台。 第一个:百家号 百家号平台目前的收益单价在众多自媒体平台来说真的算是非

    2024年02月12日
    浏览(30)
  • 这几个ai写作生成器分享给大家

    大家知道吗,现在市场有许多ai写作软件,它们已经能够模仿人类的写作风格,帮大家轻松地生成文章。我对于非常感兴趣,于是就上网查了一下有可以ai写作的软件吗?结果真的找到几款不错的软件,今天借这个机会我将它们分享给你。 以下是今天分享的ai写作软件 一:A

    2024年02月15日
    浏览(46)
  • 微软文字转语音不能试用了,分享三个方法给大家!

    最近很多小伙伴告诉我,微软文字转语音不能在线试用了,这是因为微软关闭了官方的使用页面,所以现在不能直接使用微软的网页版进行文字转语音了。 那么我们还有没有更好的方法去“白嫖”微软的文字转语音呢? 答案是肯定的,今天再给大家分享三个可以白嫖微软文

    2024年02月11日
    浏览(33)
  • 分享几个源码网站奉献给大家(持续更新中……)

    1.51源码: http://www.51aspx.com/ 2.源码之家: http://www.codejia.com/ 3.源码网: http://www.codepub.com/ 4.虾客源码: http://www.xkxz.com/ 5.多多源码: http://www.morecode.net/ 6.洪越源代码: http://www.softhy.net/ 7.锋网源码:http://www.fwvv.net/ 8.代码爱好者:http://www.codefans.com/ 9.爱源码:http://www.aiyuanma

    2024年01月16日
    浏览(42)
  • 免费分享一些Open Ai的key,供大家使用

    谁创造了ChatGPT? ChatGPT由人工智能和研究公司OpenAI创建。该公司于2022年11月30日发布推出了ChatGP OpenAI还负责创建流行的画图模型DALL-E和自动语音识别系统Whisper。 ChatGPT官方的运营成本大概是多少? GPT-3 训练一次的成本约为 140 万美元。 对于一些更大的 LLM(大型语言模型),

    2024年02月05日
    浏览(73)
  • 如何从视频中提取音频?分享三个免费的方法给大家!

    在数字时代,视频和音频的使用越来越广泛。有时,您可能希望从视频中提取音频,以便单独使用或与他人分享。无需购买昂贵的软件或具备专业技能,下面将介绍三种免费的方法,帮助您从视频中提取音频。这些方法简单易行,适用于任何人。 方法一:使用剪映 剪映是一

    2024年02月06日
    浏览(39)
  • 天拓四方分享:危化品企业如何搭建安全生产风险预警防控平台?

    危化品企业作为高风险行业,其安全生产问题一直备受关注。为了有效预防和控制危化品企业在生产过程中可能出现的安全风险,提高企业的安全性和稳定性,搭建一套有效的安全生产风险预警防控平台势在必行,通过平台实现危化品生产、储存、运输等全流程的实时监控和

    2024年02月02日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包