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