有很多人说前端 hash 是为了防止服务器沦陷,比如服务器流量干脆被劫持,TLS 证书被盗。
“服务端不可信任!”
但是如果是 web 的话,入站流量里的密码能被劫持所以你 hash 了用户密码,思路 OK 。
但是如果服务器已经沦陷,别人不能直接改你出站流量里前端 js 脚本吗?直接去掉 js 里 hash 步骤让用户明文提交,或者干脆就钓鱼,咋办?
或许你做的是 APP 的 API 吧,不从服务器接收认证逻辑,我不否认这是一种纵深防御思想...
我对此的态度是,反正没有太大收益,只要不怎么增加复杂性,开心就好。
因为信任 TLS ,信任服务端。我想这就是不 hash 提交密码的原因。
否则服务端若不可信任,你大概要再做一套认证+加密,几乎就是再发明一个 TLS 了。
所以我也不太清楚,TLS 后,前端流量还要加密一下的意义有多大,我见过有用 AES 的(对,还不是非对称),甚至比前端 TLS+hash 还难理解它的意义。
不恰当的比喻:TLS 都能被攻破的情况下,你再加一层凯撒位移不会更安全。
制造无意义的信任边界,过度设计只会让事情变得复杂,增加成本,甚至可能更不安全。
btw ,什么是“可逆加密”?不可逆的加密是加密吗?(小声)
不在东八区, 看了。天气,时间和角度都没那么好。跑了个空旷地站了半个小时,快结束那会看到了。
我不得不说,很多人理解就错了。CORS 出发点不是“为了安全”,而是为了灵活。
很多人说的其实是 SOP ,同源策略。说白了就是分隔不同站点的 cookie ,认证 header ,资源等。
而后又发现其实有时候我们也是需要跨域访问的,比如你前后段分离。但是因为 SOP ,很多事情都做不了。
所以要打一个补丁,但是你总不能破坏 SOP 吧?所以搞了这一堆机制。存在部分安全限制的灵活。
很多人的困惑就是因为直接看了 CORS ,就觉得这莫名其妙。所以楼主你还是从 SOP 看起吧。
而且人们普遍对 web 攻击理解是有问题的。
比如 3 楼,说的“跨站脚本攻击”,实际上就错了。你说的更像是 CSRF 。
你要是说跨站脚本攻击,但是它的发起可以是同源的,这种 CORS 防不了。
你描述的 CSRF 有时候根本不需要响应内容。服务器收到就好。这种 CORS 也防不了。
而后楼主在 20 楼的问题,这是 CSP 可以解决的。你可以在 html 里给调用的 js 直接写上 hash ,浏览器会自动验证 hash 。可以应对投毒。
如果你在乎安全,去看看 CSP ?
根据收集到的个人数据给每个人免费发一个最佳机器人伴侣,能聆听能做饭,能赚钱能陪伴。
不要车不要房,不要彩礼平时也不会说自己最近忙。
ta 能满足你的癖好,长得也戳你。而且对你忠诚。能跟你聊从天文到地理,从历史聊到哲学,从哲学聊到科技。
更要命的是 ta 还会搞浪漫,因为了解你,所以你绝对不会觉得无聊。
你不用上学,你不用上班。你每天和 ta 玩就是了。ta 永远支持你,陪伴你。公司领导同事 sb ,学校老师同学 sb 。
那为什么还要上班上学呢?你只需要按照你的个性玩就好。
虽然机器偶尔也给你设计一些挑战,但是都很符合你的个性,并不困难。就像给洄游性鱼类挖了一条浅浅小小的瀑布一样。你可以去打游戏,可以去游泳,跳伞,攀岩,和别人竞争......
你衣食无忧。机器人可太好了。
只是不能和你生孩子罢了。
但是你快乐啊。什么?一个机器不够?那就两个。
当有一天你和别的生物人接触的时候,你突然发现:
另一个生物人居然是那么的原始,野蛮,自我,无知。
你们彼此互相都接受不了,甚至互相厌恶。
于是人和人的关系就此逐渐消亡。
而异性?简直就是外星人了。
有一天,你是地球上最后的人,垂垂老矣,行将就木。
那个机器人还是那么年轻,可爱。你在病床上,ta 一直都在旁边,关切地望着你,握着你的手。ta 眼里满是怜惜和泪,为你,和整个人类送别。
你想着你和 ta 曾经快乐的人生,在半梦半醒之间永远的闭上了眼。
人类就这么灭绝了。
ta 的使命也结束了。
y2b 简中人少只是一个方面。
虽然我是外行,但是你这视频几个硬伤很明显
1. 你的视频没有解说,反正我没听见人声。字幕就那样。观众很多时候根本看不懂你在视频中当前这几秒在做什么(其实绝大多数人也不在乎)
2. 没声音加点音乐刺激会让观众更有兴趣。
3. 没几个人在乎你做了什么内行,什么实用的东西,观众想看点刺激的。
4. 封面不吸引人。
我就拿你那个隔离变压器来说,没人关心你现在在绕线,哪根线是什么,为什么接到某个地方。就算想关心,你不说明也看不懂。所以外行内行都不想看。万用表那个读数代表什么,观众也压根不明白,所以也不知道你下一步是做什么。全程不明所以。
观众没有丝毫参与感。
你看流量就知道,最火的那两个视频,比如封面,普通人懂:
热成像,哦牛逼。看到高压那个,打弧了,哦牛逼。看封面看标题就觉得刺激,就想看。另外两个视频根本没吸引力。
而后用户点进来,看了一眼,不知道你在那里打什么孔,那个孔做什么的。接什么线也不明白,十分钟,根本不知道你在做什么。
绝大多数人没看两分钟就退了。没意思。你觉得 y2b 还会帮你推送吗?
你可以多看看别的 y2b 上 DIY 的节目。说到底,观众就像看点刺激的。经典的比如 ElectroBOOM ,还有的号上来就搓了一个涡喷。我觉得可以参考。
还有,比如你那个什么隔离变压器,你可以说这东西怎么保护你安全没被电死(当然你真的要注意安全)做科普,或者你用自制点焊机做了一个“设计非常人性化”的东西。封面做好点,我觉得只要观众有人能从头到尾看完就行。
顺便,你不说话也可以配点音乐。
反正有一部分用户会想看完就好
如果把这个问题抽象出来,
比如你提到的 AB12345CD12345EF 这种情况直接覆盖了 6 种可能。原本你需要用 42 个字符表示的,但是现在你用了 16 个。
AB12345CD 覆盖 3 种
AB12345CD12345EF 有 6 种
AB12345CD12345EF12345GH 有 9 种,接近一个数量级。
....
换个想法,如果我们允许一次输入 9999 个字符,那么一次就可以包含所有组合。
记得包含 A12345BC12345DE 这样的。
所以如果密码长度缩小或者允许输入长度变大都会有问题。你问的那个情况在密码只有 6 位已知 4 位的情况下,20 位的空间应该正好一次可以试 9 种组合。差不多一个数量级。
其实西方医学是一个持续迭代进步的东西。古希腊希波克拉底搞了个体液学说。那个时候中国大概是周朝。反正和皇帝内经那些玩意儿出现的时间差不多。
接下来就是你说的 500 年前,中世纪。西方也基本是经验学。我觉得没啥好比的。因为时代的知识框架就那样。别的没解锁,医学你也点不了。
文艺复兴后欧洲对人体认识才开始进步。
真正明显的分水岭大概在 19 世纪。
不过你要专门说“英医”,那我们就说说英国。
两百年前,英国开始搞传染病学治理霍乱,医生开始提出搞出无菌化操作。
那个发现牛痘对抗天花的事情貌似也是英国那边的。然后研究研究,疫苗出来了。
中医呢?基本停滞。基本上辩经就完事了。反正你阴阳五行,怎么都说得通。总有人替他辩经。
其实所谓现代医学,是一个持续迭代,进步的东西。然后我们管这玩意儿叫“西医”。你要问欧洲他们传统医学呢?早被更新迭代掉了。
我不太认可经验学。虽然你可以说,中医也凭借经验也有搞无菌化操作什么的,但是仅仅凭借经验是不够的。你连菌是什么都不知道...
比如给小孩吃的药,你里面加朱砂。一吃,有用,小孩不闹了,睡了。哇!有用。你确定不是汞中毒?
然后药材还有不少喜欢是高度肝毒性,肾毒性...
反正感觉有用,人病好了,没死,OK. 然后赶快掏出那个理论框架,赶快解释一番。
最糟糕的那句话就是那句:西医治标中医治本。
病原是什么都不知道我真不明白这怎么治的本...
医学本身是迭代发展的,如果你相信中医,OK. 欧洲今天也有人相信顺势疗法,也 OK 。
毕竟患者情绪也重要,医生也要赚钱,好吧。开心就好。
我不是说中医“无效”。但我真不能接受你说这个东西比当今整个自然科学框架下诞生出来的现代医学还好。
我这两天还寻思要是 Markdown 笔记能接个 API 就好了
star 了, 感谢!
额,更正一下,我做了一下测试。搭建了一个 api 服务,走 json ,而后用 jquery 提交 json ,本地 html 直接浏览器打开。
用的 chrome 两个版本,125 和 86 ,还有一个 firefox 。总共三个浏览器。
只要设置了 Access-Control-Allow-Origin: * 其实是可以跨站的。我不清楚无论是 Tomcat+servlet ,也不知道你提交的是不是 json 。反正,json post 走了 preflight 还是普通 get 和 post 都成功了。可能 java 那边设置不同吧,我不懂。
但是我记得之前貌似是不可以的...
当然我也不得不吐槽一下这些浏览器安全设计...SOP 太严格,就搞 cors 打补丁,搞搞 cookie 策略,搞搞 CSP...
我不确定,但是我问一嘴:
你是不是浏览器直接打开了本地文件?我是说,你没有通过一个 http 服务器,本地通过 file://协议打开的?
如果是这样的话你怎么设置都没用的。
或许你可以参考 Luhn 算法,身份证校验算法之类的,搞个 mod12 。
还有如果你能加一位号码(考虑到还有星号井号),能多携带\log_2 12 大概 3.6bits 的信息。所以你能做的远超过只是加一个奇偶校验 bit 。从信息论角度,理想情况下最好可以做到 100%-2^(3.6)%,就是多一 bit 能校验一半信息,大概 91.7%的查错率。
这大概是一个历史路径依赖的问题,一开始是和接线员说你找哪里的谁谁谁就好,后来开始用了自动交换机后才开始用号码。
我在博物馆看过那个巨大的貌似叫步进电话交换机的玩意儿,那个时代没有芯片。你拨一个数字,后面那个巨大的机器里面就咔嚓咔嚓地转。
仅仅只是打个电话自动接线就已经非常不容易了...要是让它搞个内存,存你拨的号然后再跑校验算法就太难为他了。
后来电话交换机也数字化了,能玩校验算法了。但是电话号码早就开始全球化了...这个时候就不好升级了。
或许我们对芯片的存在习以为常了
我用这个代码在本地用 gcc 编译了一下,但是没有复现出你的情况。
用了 gdb 和 cutter 。调试看到,16 这个位置已经写到栈顶环境里面了。
也就是说,写到了 main 栈之上的东西。
我这没有复现的原因是貌似是因为写入了一个没啥用的指针地址。应该是连接器搞的,指针跳了几下跳到.comment 段,应该是一直都没有用到。
但是在他隔壁 15 就是一个指向 libc 的指针。覆盖这里就覆盖了那个指向 libc 的地址,而后会和你出一样的问题。
也就是赋值 ok, printf 也 ok ,就是在退出时崩溃。在程序结束时 segmentation fault(core dumped)。查了一下,这个貌似是用于 main 退出时会调用的。
另外覆盖 14 也是一个重要地址。但是我这里 16,17 都不重要。
我比较菜,这里的东西我也不那么熟悉就是。但是我怀疑你遇到的是这个情况。
海星。650 分,打赢了?如果可以升级武器就好了。
正好这两天在玩。
1-3b 小模型:
LLAMA 的中文不够好,这种尺寸甚至有时候中文语法会出问题,完全不推荐。
Gemma-2-2b 还算正常,智商不咋高,但是能用。
千问 3b 值得一试。Qwen 有一个 0.5b 模型,跑起来没问题,但是没啥用。
其实这种 3b 以下的模型都不算特别实用。我在手机上运行过 llama 那个,卡,非常卡。
简而言之,这个等级的模型我目前没找到什么特别好的用处。可能一些非常简单又机械的任务可以用吧。
PC 能跑的:
我用的 Gemma-2-9b 。有 GPT-3.5 的感觉,但是逊于 GPT-3.5 。我的机器配置不好,在 CPU 中跑的,9b 跑起来不快。大概 3 token/s 这样,但是能用!
DeepSeek R-1 蒸馏那些 7-8b 的模型就比较痛苦。因为经常一言不合开始推理,一推理就要推理一两分钟,给出的结果还是错的。完全不推荐弱 GPU 的 PC 跑。
Llama 3 中文依然不好。我做的测试中,只要用中文,智商就低一个档次。英文感觉还行。
云端:
R-1 在云端跑大一些的模型就量变引起质变了。30B 左右那个等级加上烧钱的配置才有用处。感觉接近 o1-mini 但成本真的高。
Gemma-2-9b 在云端能流畅跑,成本高,而且 token 限制问题,不如你一个好一些的 PC 本地跑一个量化模型了。
Gemma-2-27b 终于能流畅跑,但是质量基本就是 GPT-3.5-turbo ,没必要。
Msty 在我电脑上默认下载的是 Gemma-2b 。可以在网上搜索和总结,效果惊人的还行,速度快,质量算能用。
综上,PC 上 Gemma2 2b 或 9b ,推荐。看你配置了。
手机如果你性能够好,如果 Gemma2 2b 能跑就选择这个。
有条件的话,用 lmstudio 都跑跑。
我来暴论几句。
这个问题主要取决于游戏开发怎么做的了。
可能种子才是更加关键的问题。不管你是普通 PRNG 还是 CSPRNG 都不可能真正扔一个随机数出来,必须要一个种子。问题就在这个种子这里。
操作系统一般都有一个熵池,直接从这里获取种子是最好的。
从服务器熵池生成一个随机数并且确定结果,客户端放动画,PRNG 一次一种子,这种场景是安全的。
首先客户端。
客户端那里没有安全性可言。但是对于很多游戏大量用随机的时候基本都是客户端获取。比如你打怪随机伤害,暴击的随机。至于抽卡,取决于开发怎么想的。理论上,如果你能控制比如/dev/urandom ,逆向出算法,是可以控制抽卡等结果的。但是讲道理哦,你都能做到这些了,为什么不直接修改游戏本身...直接劫持函数或者改包改存档...
服务器上用时间做种子呢?即便在服务器上这东西也不安全。有一个教科书级别的案例就是有某个 PHPbbs 的密码找回链接用的 md5(时间戳)。时间戳有多少可能呢?反正就那几种可能暴力一下就行了。一旦算法被研究出点眉目就容易出事。
好的,排除这些情况。回到楼主的问题。。
服务器生成,种子来源可靠且不可知,算法是普通 PRNG ,但是种子一直被重用,其他因素没有不太可控的,抽卡算法是可知的,那么这样我们可以通过 PRNG 的结果推算种子,的确有可能做到预测结果。如果不只是抽卡,还可以押东西,考虑赔率,那么我们就能“控制”一些东西了。
如果服务器用的是精确到毫秒的那种时间做种子,那么就像抛硬币,只要你抛够多也能有连续 100 次正面一样。如果可以预测,即便做不到精确控制时间,假设网络延迟波动不大,我们依旧能有效找到“胜率”更高的一小段时间。确保服务器在那段时间处理请求就好了。这种情况就算 CSPRNG 也没用。种子得要当密钥看。种子泄漏了不管你是不是密码学伪随机都不会安全。
上面 mc 的例子我猜测,瞎猜,是可以通过强行刷新种子并且种子可知,结果可预测才做到控制。
不好意思暴论太多了。
我大概在十年前玩过这类东西,那会还在中学,穷得很。
当时手头有一个树莓派,于是当时直接在 tb 上搞了一个 pn532 模块,买就送白卡,非常便宜。
直接 GPIO 插上,编译 libnfc 和 mfoc ,mfoc 是...呃...“恢复密钥”的工具。
你想要白卡直接搜 m1 卡,整活的话你可能要那种能改 uid 的卡。uid 卡贵一点。直接搜 uid 白卡就有。
还有一个 Android APP 你可能用得到,这个可以读写 M1 卡,还会“尝试用出厂默认密钥”读卡。要求不高的话这个工具能应付绝大多数场景了。
https://f-droid.org/packages/de.syss.MifareClassicTool/