iT邦幫忙

0

C# NET6,要如何在網頁上可以啟動客戶端本機的程式?

  • 分享至 

  • xImage

網頁與客戶端的程式都是由我自己撰寫的前提下
目標:
1.當使用者在網頁上按下按鈕,會檢查有沒有安裝客戶端程式,如果沒有安裝,會提供安裝檔下載。
2.如果已經安裝,就執行該程式,該程式會回傳電腦上的資訊(ex. 電腦名稱),並顯示在網頁上

請問如何用C# NET6做到?
網頁上要怎樣呼叫客戶端的應用程式?

類似的範例是自然人憑證的網站,可以讀取讀卡機的資料

謝謝

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
3
海綿寶寶
iT邦大神 1 級 ‧ 2023-07-27 07:54:08
最佳解答

參考某家銀行網路ATM的做法
1.「客戶端程式」弄個小HTTP Service,在固定網址 listen,例:localhost:54321
2.網頁程式發 request 至 localhost:54321,有兩種情形
可通:收到本機硬體資訊
不通:提示user下載所謂的「客戶端程式」

看更多先前的回應...收起先前的回應...
froce iT邦大師 1 級 ‧ 2023-07-27 08:19:44 檢舉

現在基本都是這個模式了。
而且server的ip記得要bind 127.0.0.1,不要bind 0.0.0.0。裝的人被弱掃的話會很頭痛。

jack8900 iT邦新手 1 級 ‧ 2023-07-27 14:22:32 檢舉

froce客戶端程式監聽localhost:54321,不代表server的ip就是127.0.0.1了嗎? 還是哪邊需要做額外設定?

jack8900 iT邦新手 1 級 ‧ 2023-07-27 14:23:55 檢舉

海綿寶寶http service如果客戶端那邊沒有啟動,有可能從網頁那邊讓客戶啟動嗎? 還是有什麼好方法可以解決?

froce iT邦大師 1 級 ‧ 2023-07-27 14:29:31 檢舉

客戶端程式監聽localhost:54321,不代表server的ip就是127.0.0.1了嗎? 還是哪邊需要做額外設定?

沒,只是提醒一下不要bind到0.0.0.0,不同語言的http server會有不同的預設值,我有遇過銀行插件bind 0.0.0.0,然後弱掃被掃到ssl證書過期的。

http service如果客戶端那邊沒有啟動,有可能從網頁那邊讓客戶啟動嗎? 還是有什麼好方法可以解決?

沒有,只能在你打包成安裝包的時候把他打包成系統service。
NSIS的話有插件,msi我不清楚。
你能做的頂多是提醒用戶安裝客戶端軟體,加檢查/提醒一下service有沒有開啟。

客戶端程式監聽localhost:54321,不代表server的ip就是127.0.0.1了嗎? 還是哪邊需要做額外設定?

對,froce大大只是強調/提醒你這點

http service如果客戶端那邊沒有啟動,有可能從網頁那邊讓客戶啟動嗎?

我是沒辦法

還是有什麼好方法可以解決?

可以去找我朋友 Ethan Hunt 應該就可以

jack8900 iT邦新手 1 級 ‧ 2023-08-01 11:38:25 檢舉

froce海綿寶寶
請問這種做法有沒有可能會有什麼資安風險?
如果有的話,要怎樣避免比較好?
謝謝

froce iT邦大師 1 級 ‧ 2023-08-01 12:45:25 檢舉
  1. bind localhost
  2. 要注意安裝檔不要被人替換/偽造,最好是經過正式簽章
  3. 採用需要編譯的語言去寫,我為啥會知道人家的做法,是因為有去看過HiCOS的作法
  4. 剩下的就跟一般寫web service一樣

只開放本機存取就比一般web service安全了。

0
PinShengs
iT邦新手 5 級 ‧ 2023-07-27 02:57:26

網頁應無法直接讀取windows內的資訊,需寫另一個軟體請使用者安裝。

利用網頁呼叫您的安裝軟體進行檢查

0

基於本機安全性原則,網頁程式是無法直接使用或開啟客戶端的應用程式。

但還是可以用ACX或OBJ的方式來去啟動寫好的附屬應用程式,
或是寫成瀏覽器支援的外掛程式。
或是H5本身可呼叫的基本設備處理

但這還是有一道防線。需要客戶端同意啟動並授權使用。

你先往這方面去找資料吧。讀卡機的讀取是沒困難,網路上有很多範例可以應用。
但要達到完全自動化還是不可能。還是得經過一些手動程序。

我要發表回答

立即登入回答