簡體   English   中英

Windows和Windows之間的IPC安全到當前用戶

[英]IPC on Windows between Java and Python secured to the current user

我們有一個Rest API,需要客戶端證書身份驗證。 用戶可以運行此python腳本集合來使用該API。 為了使用戶不必在每次運行一個腳本時都輸入客戶端證書的密碼,我們已經在Java中創建了該代理進程,用戶可以在后台啟動並運行該代理進程,該進程包含用戶的證書密碼在內存中(我們只是在JVM中設置了javax.net.ssl.keyStorePassword屬性)。 腳本與此過程進行通信,並且該過程僅將Rest API調用轉發到服務器(添加證書憑據)。

為了在腳本和代理進程之間執行IPC,我們只是使用套接字。 問題在於該套接字帶來了安全風險,因為某人可以通過另一人的計算機上的代理進程端口進行通信,從而可以使用另一人的證書來使用Rest API。 通過使用Java安全性僅允許從localhost連接到端口,我們已在某種程度上減輕了風險。 我認為,盡管理論上有人可以通過遠程連接到計算機然后使用端口來完成此操作。 有沒有辦法進一步限制當前Windows用戶使用該端口? 或者,也許我可以使用另一種形式的IPC來使用當前Windows用戶進行授權?

我們之所以將Java用於經紀人流程,是因為我們團隊中的每個人都比python更熟悉Java,但是如果有幫助的話,可以用python重寫它。

編輯:剛剛想起了使用Java進行代理程序的另一個原因是,我們堅持使用python v2.6,並且在此版本中似乎不支持帶有客戶端證書的https(至少不使用第3方庫) )。

最簡單的方法是使用基於cookie的訪問控制。 在用戶的個人資料/主目錄中有一個包含cookie的文件。 讓Java服務器生成並保存cookie,並讓Python客戶端腳本將cookie作為任何TCP連接上的第一數據發送。

只要攻擊者無法獲取Cookie,此方法就是安全的,然后應使用文件系統ACL保護該Cookie。

我想我想出了一個受馬丁上述職位啟發的解決方案。 當代理進程啟動時,我將創建一個偵聽IPC端口的微型http服務器。 同樣,在啟動過程中,我會將一個包含隨機生成的密碼(每次啟動都不同)的文件寫入用戶的主目錄,以便只有用戶才能讀取該文件(或管理員),但我不必擔心這一點)。 然后,通過要求發送到該端口的所有http請求使用密碼來鎖定IPC端口。 有點像Rube Goldberg風格,但我認為它會起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM