V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  geelaw  ›  全部回复第 10 页 / 共 170 页
回复总数  3399
1 ... 6  7  8  9  10  11  12  13  14  15 ... 170  
@thisismr2 #3 描述不是很清楚,比如谁是攻击者、攻击者有哪些能力(即达到何种安全性)。
最简单的场景:C 可以把 K 告诉 D ,然后 D 把 K 告诉 S 。
195 天前
回复了 zzzkkk 创建的主题 C++ fsantinize 弱智
@zzzkkk #47 接续 #50 ,假设数组前面一切可读取的虚拟内存都是 ' ',且假设指针加减运算未定义行为的实现就是访问这些虚拟内存,那么这个程序会因为把 start 减到不可读的虚拟内存地址之后继续读 start 而访问违规,从而崩溃。
195 天前
回复了 zzzkkk 创建的主题 C++ fsantinize 弱智
@zzzkkk #47 假设编译器不检查内存,并且数组前面全是空格呢?

另外这个 while 循环写得可以说是乱七八糟了。
195 天前
回复了 zzzkkk 创建的主题 C++ fsantinize 弱智
@zzzkkk #38

int a[1];
a + 0; // OK
a + 1; // OK
a - 1; // 未定义行为
a + 2; // 未定义行为

和 (a-1)、(a+2) 有没有被解引用没有任何关系。见 C++ 标准 [expr.add]/4:

When an expression J that has integral type is added to or subtracted from an expression P of pointer type, the result has the type of P.
(4.1) If P evaluates to a null pointer value and J evaluates to 0, the result is a null pointer value.
(4.2) Otherwise, if P points to an array element i of an array object x with n elements ([dcl.array]), the expressions P + J and J + P (where J has the value j) point to the (possibly-hypothetical) array element i+j of x if 0≤i+j≤n and the expression P - J points to the (possibly-hypothetical) array element i−j of x if 0≤i−j≤n.
(4.3) Otherwise, the behavior is undefined.

注意 4.2 要求表达式的结果指向数组对象或者数组末尾之后,不允许数组开头之前。
195 天前
回复了 zzzkkk 创建的主题 C++ fsantinize 弱智
@zzzkkk #31 C++ 不存在变长数组,所以 int n; scanf("%d", &n); int a[n]; 是完全错误的,即使 n 输入的是 1 也是错误的。
195 天前
回复了 zzzkkk 创建的主题 C++ fsantinize 弱智
@zzzkkk #30 所以你对 char s[25] = "长度为 30 的字符串长度为 30 的字符串"; 出错有什么异议呢?

另外 s 以空格开头的时候,在

while (start > s) {
flag = 0;
while (*start == ' ') start--;

这段代码里面会把 start 减到 s 之前,这也是未定义行为。

https://gist.github.com/GeeLaw/47dea7677eb48e1b9896bfe9d006b5f4
195 天前
回复了 zzzkkk 创建的主题 C++ fsantinize 弱智
请问楼主期待这段代码发生什么?

int a[1];
a[0] = 1;
a[1] = 2;

用超长字符串初始化不够长的字符数组的效果和上面差不多。另外楼主并不是忘了改下标,而是忘了改长度,这是两个不同的概念。

另外 char s[] = "..."; char s2[strlen(s) + 1]; 不是合法的 C++ 代码,没有拒绝编译已经很给面子了。
@dearxe2v #2 这种归约式论证不成立。

考虑 A 使用 B 的公钥加密刚刚通过键盘输入的数据,此时加密算法的随机数和明文并不来自于磁盘,如果使坏者得到了此随机数,则此密文丧失安全性,A 当然希望在加密算法运行完毕后从内存里删除随机数和明文。

另外,内存可能是主动发给外界,而不是被窃听的,例如调试崩溃记录的时候,当然希望内存转储里敏感信息越少越好。

题外话:RSA 加密已经不怎么实用了,主要是安全性弱带来的性能问题。
我应该提示一下使用托管代码写密码算法是不宜在生产中使用的,因为无法精准控制密钥何时从内存中删除(垃圾回收算法可能会随意搬动和复制内存数据,所以仅仅是清空或覆写数组是无意义的)。
199 天前
回复了 sseven 创建的主题 程序员 接口设计合理性讨论
当然是删除传入 del=1 合理,否则只要有两个客户端并发保存数据就很容易发生踩踏事件。

两个客户端可能只是开了另一个窗口,或者离开窗口很久之后忘记,重新打开,并在一年之后回到原来的窗口。
没看懂整个工作流程,你是在 Visual Studio Code 里面打开了网络共享文件夹,还是用了 VSC 的某种远程工程,还是在本机通过远程桌面等协议操作运行在远程计算机上、打开远程计算机上的本地文件夹的 VSC ,还是怎么样之类的?

第一段“都是在远程服务器上工作”听来是远程桌面到服务器( VSC 在远程计算机上运行)的意思,但是后面“发现电脑休眠了”好像又是说 VSC 在本地计算机上运行(因为我假设是办公室的客户机休眠,而不是服务器休眠)。
203 天前
回复了 Funian 创建的主题 强迫症 电子洁癖如何继续生活?
什么叫“打开文件系统”?文件系统是操作系统提供的抽象,没有打开关闭之说。

第二点感觉不是“洁癖”可以描述的,看起来是比较严重的“强迫症”。如果非常严重应该看医生,网上求医问药效果不好。
取决于你的劳动合同,你可能没有这种权利。
@keithwhisper #19 建议不要重新定义 open source ,开源并不代表应该、需要接受社区的意见、帮助。你所引用的评论也混淆了开源准确定义和“包容开放社区”的想象。
206 天前
回复了 amiwrong123 创建的主题 程序员 Linux 的清 CPU cache 的函数是哪个?
读了一下文档,看起来 drop_caches 只能清除文件系统里没有写过的缓存,sync 的作用是刷新所有文件,此外楼主的命令的影响范围是整个系统,而不是自己的进程,这样做几乎永远是错误的。

@codehz #5 可能楼主需要写很多内容后一起刷新?
206 天前
回复了 amiwrong123 创建的主题 程序员 Linux 的清 CPU cache 的函数是哪个?
关键词是 linux flush cpu cache
自卖自夸一下但是可能不适用于微信/QQ /t/638439
211 天前
回复了 LeeReamond 创建的主题 程序员 有没有什么前端验证码的成熟方案?
@yankebupt #16 经典计算机的对立面是量子计算机,这样说是因为利用量子计算可以让(发送给客户端的)程序只能(被客户端自行)运行一次,但经典计算机没有这种可能。

#18
>把明文的 Hash 也发过去让他自行验证。
我的解读是客户端会收到正确答案的 hash ,这样的话客户端可以自己尝试所有可能答案,计算它的 hash ,直到匹配为止,然后再把答案发给服务端。

>服务端只需算出他生成的那些张的 Hash ,而客户端需要枚举所有。而且等客户端枚举完,服务端可能以及换了一批 Hash 组合了
或者如果不在意服务端亲自 Hash 一下的话,可以每次给客户端随机的Hash组合算法用于验证……
比如
md5(sha1(salt(sha1(salt(md5())))))
salt(sha1(md5(sha1(salt(md5())))))

不太理解,客户端要想自己比对,当然需要知道如何计算 hash ,换用不同的算法没有意义。

In any case, 这个方案不好。此外,从攻防、补丁的角度思考效率也不高,应该从形式化和证明的角度思考。
211 天前
回复了 LeeReamond 创建的主题 程序员 有没有什么前端验证码的成熟方案?
@yankebupt #1 (经典计算机的)客户端不能自己验证,通常来说验证码的长度不足以阻挡离线枚举。

如果是注册验证,一个简单的避免重放的思路是让验证码和注册信息绑定。当然我没有仔细想过这样做的问题,标准解决方案才是正道。
212 天前
回复了 bjzhou1990 创建的主题 Windows 因为一个文件夹名字,电脑死机了
@Jirajine #28 很明显是为了避免《微软公司升级系统故意让某公司软件不能运行,我们要抵制微软、反垄断》这类文章。有些开发者的电脑上路径没有空格,且很多开发者有自己机器上测试的坏习惯——正确的测试方法是在一台全新安装的 Windows 机器上测试(可以检查出很多“只有开发环境下才能运行”的 bug )。

另外,Windows NT 4.0 的时候用户资料默认位置是 C:\WINNT\Profiles\用户名,而 Windows XP 里面默认位置是 C:\Documents and Settings\用户名,所以即使一开始在全新安装的 Windows 上测试过程序也不代表就会在以后的默认安装上成功——当然那个程序已开始没处理过空格就是错的。

我也不喜欢这种设计,因为某些程序自始至终就不是正确的,但这类程序就是很多,从 DOS 和 Unix 来的程序经常这样。

扩展阅读:搜索 8.3 names site:devblogs.microsoft.com/oldnewthing 以及把 8.3 改成 short 搜索。
1 ... 6  7  8  9  10  11  12  13  14  15 ... 170  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2606 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 34ms · UTC 15:36 · PVG 23:36 · LAX 08:36 · JFK 11:36
Developed with CodeLauncher
♥ Do have faith in what you're doing.