2011-08-09 57 views
1

我目前正在開發一個web應用程序,其中我利用葡萄牙公民卡和java小程序使用數字簽名形式。html輸入類型=文件和java小程序之間的互操作

一切都一直順利與常規形式,直到我到達類型文件的輸入問題。該應用程序支持附件,因此我創建了一個單獨的附件管理器,用戶可以在其中提交或查看附件。提交時,必須有兩種方法:正常上傳或簽署文件,然後上傳。

我的第一個想法是讓用戶在輸入type =「file」中選擇文件,如果他/她點擊了「簽名和上傳」,它將啓動一個Java小程序來生成要放在隱藏輸入。問題在於html的安全性限制,這使得在某些瀏覽器中,javascript無法訪問文件選擇值(它也拒絕訪問java applet)。

我也想過計算要在服務器端簽名的文件的哈希值,然後在客戶端簽名,但這也不是一個選項。散列及其簽名的確定必須全部在客戶端(法律原因)。

另一個想法是使用諸如JUpload之類的東西,但它不支持某些情況是連接是通過帶有客戶端證書的SSL通道(根據Web應用程序的登錄方式而定)。

最後,我甚至有這個荒謬的想法,打開小程序上的文件,簽名,然後將其存儲在隱藏的輸入base64。顯然,這會對文件大小產生巨大的限制。

所以我的問題是:這個問題最好的辦法是什麼?有什麼建議麼?

預先感謝;)

回答

0

顯然,不可能訪問從JS或Flash瀏覽器中選擇的文件。所以唯一的方法是使用可信的Java applet。雖然這不是一種優雅的方式。此外,如果您的用戶擁有客戶端證書 - 通信通道加密時簽名的原因是什麼?

相關問題