- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读一个开源 P2P 项目的源代码*,并遇到了应该使应用程序完全容易受到中间人攻击的代码 per Wikipedia .
至少如果 javax.net.ssl.X509TrustManager.getAcceptableIssuers()
将空数组视为Trust Any 而不是Trust Nothing。
它可能会这样做,因为据它所知,您正在充当具有匿名客户端的服务器,而不是加密的 P2P,要求双方都是他们所说的那样。
class ATrustManager implements X509TrustManager {
public ATrustManager() {}
public void checkClientTrusted(X509Certificate[] certs, String authType) {}
public void checkServerTrusted(X509Certificate[] certs, String authType) {}
// --- What!? ---
public X509Certificate[] getAcceptedIssuers() {
java.security.cert.X509Certificate[0];
}
// --------------
}
class Blah {
SomeObject doBlah(...) {
// ... various code ...
char[] password = "password".toCharArray();
KeyStore keystore = KeyStore.getInstance("JKS");
keystore.load(FileInputStream("app.keys"), password);
KeyManagerFactory aKeyManagerFactory =
KeyManagerFactory.getInstance("SunX509");
aKeyManagerFactory.init(keystore, password);
KeyManager[] aKeyManager = aKeyManagerFactory.getKeyManagers();
TrustManager[] aTrustManager = new TrustManager[] { new ATrustManager() };
SSLContext sslcontext = SSLContext.getInstance("SSL");
sslcontext.init(aKeyManager, aTrustManager, null);
SSLSocketFactory socketFactory = sslcontext.getSocketFactory();
Socket socket = socketFactory.createSocket(hostname, port);
OutputStream out = socket.getOutputStream();
// ... various code ...
}
我的问题:这段代码是否对中间人开放?如果是这样,我应该让项目知道这一点。
注意:
app.keys
仅存储本地节点的 key ,不存储任何远程 key 。* 源代码匿名以保护罪犯。
最佳答案
Is this code open to man-in-the-middle?
是的。您绝对接受任何 SSL 证书,无论它是否有效、是否由受信任的 CA 等签名,也无论它是否是您尝试联系的对等方的证书。永远不要在生产中部署此代码,这意味着根本不应该编写它,除非您喜欢测试不是您要在生产中部署的部署,并且除非您愿意接受代码泄漏等风险进入生产环境,带来极不安全的后果。
关于java - 一个错误配置的 Java SSLContext 容易受到中间人攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19092267/
所以我试图让(例如)输入一些值:1 -2 -3 2 5正数的数量是 5 负数的数量是 -3总计为 3 平均值为 0.6我想让它像这样,但是当我运行它时,它不起作用哪一部分是错误的??? import
我编写了一个使用 OpenCV 的 cvCalcOpticalFlowLK 的程序。它在低分辨率网络摄像头输入上表现良好,但我需要在全高清流上运行它,并在对每一帧进行光流分析后进行重要的其他计算。处理
如果我有一个 ruby 脚本 Daemon,顾名思义,它作为守护进程运行,监视系统的各个部分并能够执行需要身份验证的命令,例如更改权限,是否存在一个简单的方法来拥有第二个 ruby 脚本,比如
我们有一个基于 Ant 和 Ivy 的构建管理系统,它基本上由一个共享的 ant 文件和一组围绕目录结构的约定组成。 我试图克服的一个障碍是相当常见的“递归发布”情况。比如说,我们有 5 个内部代码模
我在嵌入式 Linux 环境中遇到了问题。尝试确定它是否可以由应用程序引起。应用程序导致内核崩溃/锁定或终止 init 有多容易? 最佳答案 非根应用程序应该不可能影响任何一个。 以 root 身份运
我目前正在尝试学习 Nim(进展缓慢 - 无法投入太多时间)。另一方面,为了获得一些工作代码,我想对我正在 ruby 中开发的 Nim 应用程序的各个部分进行原型(prototype)设计。 由于
我是一名优秀的程序员,十分优秀!