问题标签 [beast]

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.

0 投票
0 回答
1117 浏览

sql-server-2005 - 为与 MS SQL Server 2005 的 JDBC 连接启用 AES_128_CBC 和 RC4_128

为了确保我的应用程序的向后兼容性,当使用易受CVE-2011-3389影响的MS SQL Server版本(任何 2005 或 2008/2008R2 不适合服务包)时,我正在测试 JDBC over TLS 行为。理论上,有两种选择:

  • 通过禁用 CBC 保护-Djsse.enableCBCProtection=false并继续使用分组密码,例如AES_128_CBC3DES_EDE_CBC
  • 或回退到流密码,例如RC4(是的,我知道这也是不安全的,因为CVE-2015-2808)。

在实践中,虽然我在关闭 CBC 保护的情况下建立连接没有问题3DES_EDE_CBC,但我仍然无法使用RC4_1281.8.0_51更新的 JDK (恰好地址CVE-2015-2808)或AES_{128,256}_CBC(使用任何1.6+ JDK )。

以下是按 Java 版本细分的结果:

  • 1.6.0_45 ( jTDS )
    • SSL_RSA_WITH_RC4_128_MD5用来
  • 1.7.0_76 ( jTDS ) 和任何 1.8.0 到1.8.0_45 ( MS SQL JDBC ):
    • SSL_RSA_WITH_RC4_128_MD5(默认)或SSL_RSA_WITH_3DES_EDE_CBC_SHA可以使用
    • AES_128_CBC即使3DES被禁用也不会使用(3DES_EDE_CBC无论如何都会被强制)
  • 1.8.0_45 (IBM J9 8.0 SR1) ( MS SQL JDBC )
    • SSL_RSA_WITH_3DES_EDE_CBC_SHA被使用(仅当 CBC 保护关闭时成功),如果请求AESRC4
  • 1.8.0_51+ (Oracle) ( MS SQL JDBC )
    • SSL_RSA_WITH_3DES_EDE_CBC_SHA已使用(仅在 CBC 保护关闭时成功),
    • 不会使用AES_128_CBC或者AES_256_CBC即使被请求(与以前的 Java 版本不同,3DES不再强制,而是我得到一个IOExceptionafter ClientHello,它确实列出*_WITH_AES_128_CBC_SHA了兼容的密码套件)
    • RC4即使同时禁用AES和禁用也不会使用3DES"no negotiable cipher suite"jTDSMS SQL JDBC)。

这是java.security我用来请求的AES

这是要请求的版本RC4

问题:

  • 显然,AES_{128,256}_CBC我的 Java 客户端支持,因为我可以TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA在连接到MS SQL Server 2014时使用。谁能确认MS SQL Server 2005支持它?由于禁用有效导致,我认为它受支持的,但是服务器端发生了一些事情,即使 CBC 保护已关闭。AES"no negotiable cipher suite"
  • 我怎样才能RC4在 Java 1.8.0_51+中使用?此解决方案不再有效,也没有任何影响https.cipherSuites系统属性(在此处描述)。6u1157u101中有一个神奇的jdk.tls.enableRC4CipherSuites系统属性,但在 Java 1.8 中似乎没有效果。
  • jTDS到底有什么问题?"Connection reset by peer"它适用于 Java 1.6 和 1.7(驱动程序版本 1.2.8 和 1.3.1),但使用 Java 1.8,只要MS SQL JDBC仅用于3DES加密连接数据,我就会不断收到。
0 投票
1 回答
386 浏览

azure - 保护 Azure WebApp 免受 BEAST 攻击

我刚刚在我的 Azure Web App 上安装了 SSL 证书。我使用此处提供的 Symantec SSL 检查器工具检查了安装是否正确。

在结果中我可以读到

BEAST 此服务器容易受到 BEAST 攻击。确保您的服务器上启用了 TLSv1.2 协议。禁用 RC4、MD5 和 DES 算法。请联系您的 Web 服务器供应商寻求帮助。

如何在 Azure 门户中执行此操作?

更新:我也通过使用这个网站检查了这一点。它还确认该漏洞并未在服务器端得到缓解。

0 投票
1 回答
84 浏览

c++ - 尽管 -isystem 仍生成警告

在编译我们的一个应用程序时,我们使用了 Beast 和 Boost 这两个框架。在 Beast 使用的一些 Boost 代码中,g++ 会生成警告,因为它认为可能存在未初始化的变量。但是,我们使用“-isystem”标志包括 boost 和 beast。这应该会阻止显示警告,但事实并非如此。任何想法为什么?

您可以在下面看到编译命令及其输出,并进行了一些匿名化处理。

运行 Ubuntu 16.04。g++ 由供应商提供,其版本如下。

0 投票
1 回答
620 浏览

java - Oracle JDK8 中的 JSSE 是否实现了 TLS Fallback SCSV?

看起来 OpenJDK 版本 8 中的 JSSE 没有实现RFC7507。OpenJDK 错误跟踪器中存在一个未解决的缺陷: JDK-8061798

但是关于 Oracle JDK 的信息并不多。Oracle JDK 版本 8 是否实现 TLS 回退信令密码套件值 (SCSV)?如果确实如此,如何启用此功能?

0 投票
1 回答
3821 浏览

c++ - 如何使用 Beast C++ 库从 HTTP 重定向到 HTTPS?

我正在研究 Boost.Beast 库。我尝试提出一个请求,其响应是:

然后,我尝试使用此位置字段发出请求,但收到错误的请求响应。

我该如何进行重定向?有例子吗?

这是我的代码:

谢谢

0 投票
2 回答
4431 浏览

c++ - 试图理解 boost::beast 多缓冲区

Beast websocket 示例将数据存储在多缓冲区中:

该实现使用一个或多个不同大小的字符数组的序列。额外的字符数组对象被附加到序列中以适应字符序列大小的变化。

在查看界面时,我并不完全清楚它是如何工作的。如果我阅读描述,它可以被视为一个缓冲区数组。但似乎输出只是一块数据。这是否意味着“一个或多个数组”仅适用于内部结构?

在示例代码中,数据被读入缓冲区,如下所示:m_websocketStream.async_read(m_buffer.....

每个 async_read 操作是否创建一个新的内部缓冲区。

如果是这种情况,另一端如何解释。EG 如何将其读入 std::string 或 std::vector。

查看源数据时,data() 返回 const_buffer_type,这是一个前向声明。

对于数据成员,帮助信息提供了以下信息,但帮助不大:

用于将输入序列表示为缓冲区列表的类型。使用 const_buffers_type = implementation_defined;

该定义似乎来自包含的头文件 boost/asio/buffer.hpp。然而,整体结构对我来说有点令人困惑。

我只是想了解如何将数据作为字节处理或将其转换为 std::string。

尝试了以下方法,但这也是不允许的:

std::string( boost::asio::buffer_cast<const char*>(m_buffer.data()) ,boost::asio::buffer_size(m_buffer.data()) );

任何人都可以启发我一点吗?

0 投票
1 回答
449 浏览

c++ - Boost.Beast 高级服务器示例中的 HTTP Pipelining vs. WebSocket

我对这个 Boost.Beast 示例有疑问:

https://github.com/boostorg/beast/blob/908f84cb3c023ed7c5bd19e2e5283d3218a6d820/example/advanced/server/advanced_server.cpp

在第 643 行,WebSocket 升级完成。但是,如果我理解正确的话,队列中可能仍然有异步执行的 HTTP 写入命令。因此,它们与当前的 WebSocket 通信并行执行。那合法吗?还是我还没有完全理解这个例子?

0 投票
1 回答
848 浏览

c++ - 从 Beast.1.0.0-b66 到 Boost.1.67.0.Beast 的端口性能下降

我观察到从 Beast.1.0.0-b66(使用 Boost.1.64.0)迁移到 Boost.1.67.0.Beast(即将 Beast 集成到 Boost)时性能急剧下降(CPU 消耗急剧增加) . 毫无疑问我做错了什么,但我无法想象是什么。

什么是:

就是现在:

什么是:

就是现在:

当然,我还必须进行大量 API 更改。例如:

就是现在:

该应用程序工作正常——包括 SSL 握手和代理协商——但我必须解决 CPU 消耗的峰值和相应的性能下降。我想知道是否有人知道我忽略的一些明显的事情。

编辑:我应该提到我正在为 SSL 流使用 flat_buffer。

我有机会分析“端口前”和“端口后”的性能数据。这是“端口前”(即良好的性能)调用链:

这是“端口后”(即性能不佳)调用链:

0 投票
1 回答
349 浏览

c++ - Boost Beast WebSockets 每次读取都有几个不确定的写入

在 C++ 中使用 boost/beast websockets

我已经阅读了野兽 websockets 不支持非阻塞读取的问题,以及无法检查数据是否可用以及在单独的线程中进行读取和写入可能不是线程安全的事实。

那么,我遇到的问题是找出解决这个问题的正确方法:

IBM Watson 语音到文本 WebSockets API 允许您在音频数据块可用时发送它们(或从现有文件中分块发送)。但是,您不会获得每个块的文本回复。

相反,您会一直向它发送音频数据,直到它识别出暂停或话语结束,然后它最终会发回一些结果。

换句话说,您可能必须在读取返回任何内容之前执行多次写入,并且无法预测您将必须执行多少次写入。

如果没有非阻塞读取功能,并且没有将阻塞读取放在单独的线程中,我如何继续发送数据,然后仅在可用时检索结果?

0 投票
2 回答
553 浏览

c++ - Boost Beast编译错误

d:\boost\boost\beast\core\detail\ostream.hpp(263): error C2955: 'boost::beast::detail::ostream_helper': 使用类模板需要模板参数列表

编译示例项目时:http_server_small.cpp(来自“beast”)

提升\野兽\核心\细节\ostream.hpp:

Boost 版本 1.67.00,在 Visual Studio v171 (2017)、x64 下编译

它看起来像是 boost/beast lib 中的错误,但在 lib 的发布版本中看到编译错误很奇怪。(我不是lib的作者,我只是想使用它)。

也许我缺少一些编译选项或标志?有没有人弄清楚问题是什么以及如何解决?