问题 保护Web应用程序的WIFI


我创造了一个 CORS 网络应用程序(只有javascript),我在哪里 想要在不同的局域网下安装和运行。

我想把SSL,但我不知道具体配置是什么 局域网将是,并且可能每次都会有所不同。所以我 我想我不能添加经过认证的SSL。还有其他可能吗? SSL的解决方案?我不喜欢添加未经认证的方法 SSL因为警告。

我怎样才能加密包并进行安全认证 请求?我使用CouchDB默认CORS,但包可以 如果在开放的WIFI中安装并使用了Web应用程序,则会嗅探。 该应用程序只使用JavaScript,我不知道如何 保护它(唯一的后端是couchDB中的存储)。


11956
2018-05-01 10:15


起源

“该应用程序仅使用javascript,我不知道如何保护它”我会说,因为javascript是客户端语言,你无法保护它! - A. Wolff
WIFI在此设置中的作用是什么? - likeitlikeit
即使您的Web应用程序是通过Open Wi-Fi访问的,使用SSL(HTTPS)也可以提供安全通信(完整性和机密性),因为所有HTTP请求和响应数据在通过网络发送之前都已加密。保护Wi-Fi涉及使用无线安全,有线等效保密(WEP)或Wi-Fi保护接入(WPA)协议之一( en.wikipedia.org/wiki/Wireless_security ),无论使用何种SSL,都可以使用,以保护您的开放式Wi-Fi。请注意,SSL可在您的客户端和Web应用程序之间提供互联网保护。 - Only You
您将使用SSL在Internet上的客户端和Web应用程序之间提供加密通信。您可以设置Wi-Fi WPA或WPA2以防止未经授权访问您的无线网络,并且有权访问它的人无法嗅探无线数据,因为数据已加密。希望这是有道理的。 - Only You


答案:


启用CORS的应用程序的设计与是否使用SSL无直接关系。看到 CORS规范的这一部分

设计您的应用程序以支持CORS并通过SSL连接为您的应用程序提供服务是单独的决定,甚至可能不是由同一个人做出的。当你说“在不同的局域网下安装并运行”时,我认为你的意思是不同的人/公司将托管你的服务器端代码,可能在不同的域下。

您甚至不应该假设托管代码的Web服务器与执行SSL的Web服务器相同,如同 SSL终止 可能是一个不同的设备,然后将请求代理回Web服务器。

在本文档的案例中,我会在您的安装说明中对SSL进行潜在需求,并让人们以适合其环境的方式(或不是)这样做。


6
2018-05-03 20:53





从我如何理解您的问题(仅限JavaScript),您可以使用单个HTTPS主机来提供JavaScript文件,就像 谷歌的托管图书馆

如果CouchDB主机不在云中,则应为其分配单独(廉价)的SSL证书。如果安全对他们来说真的很重要,那么客户应该能够为传输层安全分配大约8美元/年。


2
2018-05-04 11:28





所以,如果我理解你的问题:

  • 您有一个可以使用跨源请求访问的Web应用程序。
  • 该应用程序将部署在本地网络上,即它将通过非公共IP地址访问(服务于该网络的机器,我将其称为“本地服务器”)。
  • 您希望保护客户端和本地服务器之间的链接,最好使用SSL。

你可以做到!让控制本地服务器的人获得SSL证书 somesubdomain.SomeDomainHeControls.com,将该证书部署到本地服务器,并将该子域指向本地IP。当通过该地址访问应用程序时,您将不会收到任何警告,并且连接将得到保护。只要客户端仅使用该域访问您的应用程序,这是安全的,因为只有服务器的所有者才能访问该密钥。

如果您自己控制本地服务器(没有人可以提取私钥),您只需获取一个野外证书即可 *.aDomainForThisPurposeThatYouControl.com,并为每个部署创建一个子域,指向适当的IP。

如果您不控制本地服务器,并且无法获得自己的证书,那么您可以获得 个人 他们的证书。这意味着你要创造 deployment1.aDomainForThisPurposeThatYouControl.com,将其指向本地IP,为该名称创建常规单主机证书,并将其安装在本地服务器上。作为安全预防措施,请不要将该域用于其他任何目的,因为您已为此域上的主机发放了私钥。

如果本地网络可以访问Internet,您也可以在您控制的外部服务器上托管应用程序。将常规SSL部署到该服务器。在从外部服务器安全地加载应用程序本身之后,它可以发出纯HTTP请求以从本地服务器获取数据。这将触发“混合内容”警告,但不会出现SSL错误。然后,您可以使用基于JavaScript的加密来保护数据。例如,如果您只想保护从客户端到服务器的数据,那么您的外部可信服务器可以为客户端提供可信的JS加密库和内部服务器的RSA公钥(通过SSL验证的连接),然后,您只需在客户端加密数据,然后通过纯HTTP发送它。理论上,您甚至可以在JavaScript中创建SSL客户端,向客户端提供脚本和可信服务器证书,使用HTTP或WebSockets隧道,并通过此隧道在本地服务器和JavaScript客户端之间运行您自己的SSL连接。当然,这不是很实用,但是安全(因为JS是通过安全连接下载的)。您还可以从受信任的服务器加载一个小型JavaScript,然后从本地服务器下载其余的JavaScript,验证签名/哈希并执行它。 Megaupload正在做类似的事情。


2
2018-05-08 20:39