我正在研究POS开发的框架。完成此程序后,它应该能够将前端内容(如屏幕布局和业务规则)与后端内容(如硬件管理)完全分开。
该框架将运行lua脚本,这些脚本将在比C允许的更高级别上控制POS,从而影响开发周期。
这里的一个很大的问题是,EMV库可以完成EMV循环的所有工作,但是会暴露一些回调以捕获交易金额,选择信用卡应用程序(借记卡,信用卡,凭证,其他),以及询问对于密码,开发人员可以创建一个屏幕,其布局在应用程序中有意义
我想将这些回调暴露给Lua开发人员。但是,由于该框架需要经过认证,我不能相信脚本作者的诚实,并且他不会滥用职权来抓取密码以扯掉客户。
也就是说,在密码数字化阶段,我已经把互联网连接库,所有I / O都用掉了,除了pinpad和触摸和文件操作。
这远远不足以保护客户的密码。恶意开发人员可能只是将捕获的密码保存在Lua环境本身上。
我想在密码输入阶段回滚对Lua State所做的所有更改,这样开发人员就可以访问他的功能(比如一个检测按键的功能,并将' *'连接到一个字段在屏幕上),但在此时间内对任何变量所做的所有更改都将丢失。
我检查了(Clone a lua state)以获得答案。但我所看到的是,如果你需要克隆一个状态,你可能正在以错误的方式使用API。克隆lua状态正是我所需要的,因为我可以克隆密码例程的状态,然后丢弃该状态并在预克隆状态下恢复程序。做到这一点的替代方案会很好,但我对其他想法持开放态度......