尽管我一直反对 用Java用 final 来绘制所有代码 ,并且已经接受了在JavaScript中使用 const 的方便,因为它通常会迫使某些纪律成为免费代码,但是有一个潜在的规则可以使我想要到处都有更多的常量。

规则是 一个函数应该返回一些东西 。 通过将所有变量都视为不可变的常量(包括函数的输入),可以在一定程度上执行此操作。 通过这种支持线程安全功能编程的方法,从 结构 上讲,您 不太可能 出现错误。

但是,有一些关于使用 const final 解决此问题的警告。

  • 有时,要求一个函数将其结果累加到一个现有的容器中(例如数组或映射)是很合理的,因为使用克隆方法来使一个新的容器返回很麻烦
  • 设置引用常量并不能保证不变性,因此您似乎很认真地使用常量关键字,但是仍然违反了一般原则

如果一个函数仅对其一个输入进行操作并返回一个值,则:

  • 它可能有一个责任
  • 非常容易测试
  • 更容易理解

相反,如果函数执行各种操作,也许在 一连串的调用中 转发到下一个,则很难理解,调试和测试……可能更难正确。 这样做可能还会 浪费内存

尽管有这样的想法,我们可能(偶尔)将一个对象传递给一个函数,以便将值累加到其中。 我们应该研究如何避免修改输入参数。

  • 不要重新定义输入参数 –如果您需要对输入为第一个参数的对象进行迭代,请使用迭代来跟踪电流,而不是在循环中重写输入变量
  • 不要更改输入内容, 因为这意味着您与呼叫者之间存在反向关系,后者可能天真地认为他们可以重复使用输入内容,但是不能-在某些情况下这是不可避免的,但是这些情况应该清楚地标明并且很少

一般规则是, 这是一个特殊的假设,您可以控制输入对象的状态

在最近的示例中,调用函数在列表上使用迭代器,而调用的函数同时接收当前项和迭代器。 该子例程正在从迭代器中删除项目以及使用当前项目。

尽管看起来可行,但我们无法向自己解释该算法为何起作用。

简短,可测试,单一职责,可测试的功能会明智地使用其输入。

翻译自: https://www.javacodegeeks.com/2020/02/attacking-your-inputs.html

zip炸弹攻击 输入

zip炸弹攻击 输入 尽管我一直反对用Java用final来绘制所有代码 ,并且已经接受了在JavaScript中使用const的方便,因为它通常会迫使某些纪律成为免费代码,但是有一个潜在的规则可以使我想要到处都有更多的常量。 规则是一个函数应该返回一些东西 。 通过将所有变量都视为不可变的常量(包括函数的输入),可以在一定程度上执行此操作。 通过这种支持线程安全功能编程的方法,从结构上讲...
最近看到资料有说到 ZIP 炸弹 ,主要在存在上传功能且对上传文件有解压动作的地方,如果校验不严,可能导致压缩 炸弹 ,导致消耗CPU导致宕机 1、生成 ZIP 炸弹 : https://github.com/CreeperKong/ zip bomb-generator python 3 zip bomb.py --mode=quoted_overlap --num-files=250 --compressed-size=21179 > zbsm. zip –num-files :压缩包包含的文件数量 –compresse
在文章的开头,让我们先来介绍一下 zip 解压 炸弹 是个 什么妖怪! 解压 炸弹 是指解压缩后能够产生巨大的数据量的可疑压缩文件!默认设置是文件扫描中产生500MB以上解压数据的是“解压 炸弹 ”,实时监控中是100MB,邮件监控是30MB。这样的压缩文件解压缩可能对解压程序造成严重负担或崩溃(可能用来 攻击 压缩软件以及占用大量电脑资源,或者杀毒软件的解压缩功能)。解压 炸弹 内,还可能存在病毒,解压中会自启动窃取用户信息 如何制作解压 炸弹 42. zip 是很有名的 zip 炸弹 。一个42KB的文件,...
本文讲的是 ZIP 炸弹 怎样反击扫描器?,如果你曾经维护一个网站或管理过服务器,那么你会清楚,总会人会尝试 攻击 你。当我在13岁时首次托管我自己的linux服务器时,我每天阅读日志,并查看每天有多少尝试连接到linux服务器(实际上是一个老的ThinkPad T21)的IP(主要来自中国和俄罗斯)。 实际上如果你有一个linux服务器,SSH是开放模式,你...
最近看linux的解压缩,无意间了解到了一个和压缩率相关的小故事——42. zip 一般我们使用压缩工具的时候,都会用到无损压缩技术,对于无损压缩, 算法 非常重要,不同的 算法 实现 的压缩率和速度有很大差别,主流的 算法 压缩率都在30%-40%之间,而这里要说的42. zip ,它的压缩率可 以说是相当恐怖了,这里顺便贴上这个文件的下载地址:42. zip 。 它的原始大小就和它的文件名一样:42kb,但...
在文章的开头,让我们先来介绍一下 zip 解压 炸弹 是个什么妖怪! 解压 炸弹 是指解压缩后能够产生巨大的数据量的可疑压缩文件!默认设置是文件扫描中产生500MB以上解压数据的是“解压 炸弹 ”,实时监控中是100MB,邮件监控是30MB。 这样的压缩文件解压缩可能对解压程序造成严重负担或崩溃(可能用来 攻击 压缩软件以及占用大量电脑资源,或者杀毒软件的解压缩功能)。 解压 炸弹 内,还可能存在病毒,... if=源文件名,如果没有文件内容要求,可指定系统0源文件,制作好的文件内容也会是0。 count=blocks,仅拷贝blocks个数据块,块大小取决于bs或ibs指定的字节数。 bs=bytes,同时设置 输入 /输出的数据块大小是bytes个字节。 of=输出文件名,自己任取。 dd if=/dev/zero count=$((1024\*1024)) bs=4096 of=/home/bombfi
1. ZIP 炸弹 zip 炸弹 就是一个高压缩比的 zip 文件,它本身可能只有几M或几十M的大小,但是解压缩之后会产生巨大的数据量,会解压到几十G的大小甚至更大,这种 zip 文件会对解压缩的系统造成严重的资源负担,影响目标系统业务甚至达到使系统崩溃的结果。 防范校验,步骤如下: 第一步,校验 ZIP 压缩包大小。 第二步,校验 ZIP 压缩包解压后的大小。 参考文档: zip 炸弹 和跨目录 zip 文件的构造 2.zi...