UniGui 的 https 设置、图形验证码,其它

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 文件运行,如何设置才能外网访问?

 

posted @ 2019-08-30 11:42  Hopesun  阅读(1438)  评论(0编辑  收藏  举报