UniGui 的部署 及 https 設置:
1、如何 支持外網通過 https 訪問,並增強安全性?
參考 《uniGUI for C++ builder下如何實現https加密瀏覽》 https://blog.csdn.net/dlboy2018/article/details/81037093
在UniGUI程序下如何實現 https 加密訪問,該部分內容在FMSOFT的幫助文檔里有詳細解釋,幫助文檔在 unigui 的安裝目錄下C:\Program Files (x86)\FMSoft\Framework\uniGUI\Docs, 在 uniGUI.chm 的開發者指導(Delevoper‘s Guide \ Web Deployment \ SSL Configuration)有專門一節描述 。
下面僅描述 自己創建證書。比如使用 OPENSSL 自己創建證書。參考 https://slproweb.com/products/Win32OpenSSL.html (外購權威證書,可參考https://www.chinassl.net/)。
Unigui 僅自行使用,采用編譯為 獨立的 Win exe程序 或者服務。按手冊說明,主要是提供三個文件:root.pem、cert.pem、key.pem。
並采用 pem格式。Pem 是人類可讀的 base64 ASCII 文件,可在編輯器中打開。一個 pem 文件可包含多個 certificate.。為了在UniGui中能用,每個 pem file 須只能有一個 certificate。
---------------------------------------------------
1) 產生一個 Certificate Signing Request ( CSR )文件,方法有很多, 使用 OpenSSL 工具 ,需要 去 https://slproweb.com/products/Win32OpenSSL.html 下載並安裝。 使用 管理員(Administrator)權限啟 cmd 命令行,發出下列指令:
openssl req -new -newkey rsa:2048 -nodes -keyout key.pem -out req.csr
Unigui 在 ServerModule 對 其進行設置,有 SSL 屬性的相關項,可以設置,首先 Enabled 必須 鈎上。
SSLPort : 端口,默認值 0,可以設置為 443 或者 其它可用的;
SSLPassword :
SSLOptions 的其它屬性:
RootCertFile
CertFile
KeyFile
CiperList
DHParamsFile
Mode (ISAPI DLLs 專用,不用於 獨立程序或服務,它屬於 IIS,需要在其中配置 SSL )
Method、SSLVersions: 有SSL 與 TSL 的多個版本,應選擇 TSL 1_1 以上。版本選擇不同,相應的 Method 也不同,兩者相關。
選擇的Method 不同,相應的版本也會不同選擇!
VerifyDepth、VerifyDeir 、VerifyMode(Peer、FailIfNoPeer、ClientOnce 或者三個組合)
2、在登錄頁,增加 圖形中(數字/文字)等驗證,防止網絡攻擊?
驗證碼生成器 (推薦) : http://www.cnblogs.com/ecofast/p/4224016.html
unigui圖形驗證碼(不推薦,函數不公開) : https://www.cnblogs.com/hnxxcxg/p/10884619.html
驗證碼圖片識別 (反向工程): https://www.cnblogs.com/ChinaEHR/p/4083980.html
參考 http://www.cnblogs.com/ecofast/p/4224016.html 提供的方法,並引入 Unigui 項目。
1) 單獨創建一個 unit , 復制其 驗證碼生成代碼。 本人命名: unit AuthCodeGen;
2)在 Unigui 的 login 登錄頁中,引入 Use 上述 unit ; Use AuthCodeGen;
增加兩個 模塊變量,用於保存 每次生成的 驗證圖片,以及相關的 字符串。 var genimage : Timage; authcode : string;
增加一個 TUniTimage 圖片組件(命名 UniImgCode),用於顯示動態生成的驗證碼到登錄頁,供用於識別;另一個TUniEdit(命名 UniAuthCode),用於接收用戶識別后輸入碼值(數字或者字母);
3)增加一個 TUniTimage 組件的點擊事件,用於用戶識別不了時,動態變換驗證碼,代碼如下:
procedure TUniLogonForm.UniImgCodeClick(Sender: TObject);
begin
genimage := Timage.Create(self);
authcode := GenerateAuthenticode(genimage,4);
UniImgCode.Picture := genimage.Picture;
end;
4)在 登錄頁 顯示時,增加調用上述事件代碼,生成 驗證碼;
procedure TUniLogonForm.UniLoginFormCreate(Sender: TObject);
begin
UniImgCodeClick(Sender);
end;
5) 在 確認用戶、密碼、驗證碼 的事件中,增加 判斷 用戶 識別輸入的碼 是否 = 系統動態生成的碼值。不等,提示重新輸入,返回。
if UniAuthCode.text <> authcode then
begin
ShowMessage('輸入的驗證碼不正確,請仔細校對!');
exit;
end;
3、本地 exe 文件運行,如何設置才能外網訪問?