- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
PMD 在 Sun Security 规则集中有一个名为 ArrayIsStoredDirectly 的规则:
Constructors and methods receiving arrays should clone objects and store the copy. This prevents that future changes from the user affect the internal functionality.
这是他们的例子:
public class Foo {
private String [] x;
public void foo (String [] param) {
// Don't do this, make a copy of the array at least
this.x=param;
}
}
我不认为我完全理解这条规则背后的原因。是因为传递的数组中的值可以在其他地方更改吗?就此而言,传递集合与传递数组之间有区别吗?
最佳答案
问题在于调用者可能会保留它传递的数组参数的副本,然后可以更改其内容。如果该对象是安全关键的并且调用是由不受信任的代码进行的,那么您就有了安全漏洞。
在这种情况下,传递一个集合并保存它而不复制它也将是一个潜在的安全风险。 (我不知道是否有PMD规则告诉你这个。)
在这两种情况下,解决风险(如果确实存在)的方法是将属性设置为参数数组或集合的副本。另一方面,如果您知道调用者始终是受信任的代码,那么复制就是浪费时间,更好的解决方案是告诉 PMD 对那个特定方法保持沉默。
关于java - PMD 的 ArrayIsStoredDirectly 规则背后的推理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3315598/
我正在寻找匹配 /(?=\W)(gimme)(?=\W)/gi 或类似的东西。 \W 应该是零宽度字符来包围我的实际匹配项。 也许有一些背景。我想用添加的文字填充替换某些单词(总是 \w+),但前提是
如何在不使用 Intent 连接到 VPN 服务的情况下以编程方式检测流量是否正在通过 VPN。有系统调用吗? 最佳答案 这个有效: private boolean checkVPN() {
我是一名优秀的程序员,十分优秀!