问题标签 [defensive-programming]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Erlang 的让它崩溃的哲学 - 适用于其他地方吗?
Erlang(或 Joe Armstrong 的?)建议不要使用防御性编程并让进程崩溃(而不是用试图跟踪残骸的不必要的守卫来污染你的代码)对我来说非常有意义,以至于我想知道为什么我浪费了这么多多年来在错误处理方面的努力!
我想知道的是——这种方法是否只适用于像 Erlang 这样的平台?Erlang 有一个虚拟机,它对进程监督树具有简单的原生支持,并且重新启动进程非常快。我是否应该将我的开发工作(不在 Erlang 世界中时)花在重新创建监督树上,而不是让自己陷入顶级异常处理程序、错误代码、空结果等等等。
你认为这种方法的改变在(比如说).NET 或 Java 领域会很好用吗?
security - 像杀毒软件一样进行自我防御
我为防御系统、防病毒、反恶意软件等编写程序。而且我在通过 tast manager->Kill Process 杀死防御进程时遇到问题。我测试了一些防病毒软件,但它们不允许我杀死他的进程。我只能在服务中阻止他们。我如何为我的程序创建这种防御。谢谢!
user-interface - 在禁用的 GUI 选项中添加额外检查是一个好习惯吗?
我指的是以下内容:
添加该检查可确保程序不会运行该操作,但它也可以被视为隐藏错误(some_button_click() 必须根本没有运行)。
那么,你怎么看呢?这是一种安全的编码实践还是隐藏了一个错误?
static-analysis - Parasoft 规则向导
我正在尝试创建一个静态规则来检查令牌传递以在 SIL4 应用程序中进行防御性编程。
规则如下:“每个函数都应有一个 const uint_32 作为最后一个参数”
IE:
有人可以帮助我吗?我在黑暗中摸索
cocoa - Cocoa UI 和通用框架元素对恶意攻击的保护程度如何?
到目前为止,我对整体安全考虑几乎没有什么顾虑,因为我一直在开发促销和不重要的 iPhone 应用程序。
然而,目前,我正在开发一个 Mac 应用程序,它需要对此事进行更多思考,因为它处理敏感的用户信息。
虽然我知道我必须注意保护物理形式的数据(在磁盘上),例如通过加密它,但我想知道在应用程序的正常使用过程中它驻留在内存中的安全性如何。
因此我想知道:
只要我的应用程序仅基于 NSTextField 和 Core Data 等框架元素构建,它的安全性如何?
Cocoa 输入元素对恶意攻击有多敏感?保护使用 Core Data 存储的已保存数据的最佳方法是什么?
ios - 提高 setValueForKeyPath 的健壮性
我创建了 NSObject 的扩展,以允许从 PLIST 或字典中包含的数据设置对象属性。我确实使用setValuesForKeysWithDictionary
过,但这仅适用于键而不是 keyPaths。我的扩展做同样的事情,除了允许 PLIST 包含键路径和键。例如,detailTextLabel.text@“详细文本”作为键值对。
这很好用,除了由于 PLIST 中的拼写错误可能导致应用程序崩溃。例如,如果属性名称存在但与预期的类型不同(例如数字而不是字符串),它将崩溃。什么是最好的方法来使它更健壮和防御性地编码以避免这些类型的错误?
我已经- (void) setValue:(id)value forUndefinedKey:(NSString *)key {}
在我的对象中使用来捕获 PLIST 中与实际键不对应的项目。
在此先感谢,戴夫。
c# - 如果我在一个网站上重复发帖一百万次会怎样?
我只是想通过本地主机向网站发布一些内容以检索一些数据,突然间,我想到了这个想法:如果我创建一个帖子,将其放入运行超过 100 万次的 for 循环中会发生什么,然后向特定 URL 发送请求一百万次?我只是不想试图避免任何伤害,但我想知道。如果这会造成一些伤害,我该如何避免这种攻击?
java - Java String.split 是否有可能返回 null String[]
是否可以split
返回 null String[]
?我很好奇,因为我想尝试在我的代码中尽可能地进行防御,而无需进行不必要的检查。代码如下:
parts
在使用后拆分之前是否需要执行空检查?
c# - 具有非自动属性的 C# 匿名支持字段
我想创建一个私有成员变量,即使对于拥有它的类也是私有的,并且只能由它的 getter 和 setter 访问。我知道你可以用自动属性来做到这一点,比如
但我希望能够修改 getter 和 setter,以便(例如)我可以记录该字段已设置的次数(即使是拥有类)。像这样的东西
其中“hiddenValue”是只能在 getter 和 setter 中访问的成员。为什么?因为我是一个偏执的防御性程序员,我什至不相信自己:p。
这在 C# 中可能吗?如果是这样,语法是什么?
谢谢。
c++ - C++ 防御性编程:从具有类型安全性的缓冲区中读取
假设我有一个我不拥有的类:DataBuffer。它提供了各种get成员函数:
从包含在此缓冲区中的结构中读取时,我知道字段的顺序和大小,并且我想减少未来代码更改导致错误的机会:
然后有人在写入之前检查更改以对标头执行某些操作:
以下是一种可以接受的方式来强化代码以防止更改?请记住,我不能将函数名称更改为 getByte、getUShort 等。我可以从 DataBuffer 继承,但这似乎有点过头了。
更新了不安全的遗留代码示例: