如何在您的应用程序中进行安全的在线支付
已发表: 2021-10-05随着我们的应用程序正在击败臭名昭著的黑客攻击,似乎突然冒出来挑战我们的移动应用程序支付安全,大大小小的企业对移动应用程序安全的努力已经开始起飞。 无处不在,从电子商务商店到高级机构的金融系统,人们都要求开发在线支付安全应用程序。 这些天搜索最多的请求是:如何建立具有更高保护级别的东西? 我们将尽最大努力在这里强调它。
安全是一种新的黑色。
还记得最近在乌克兰燃起熊熊烈火并肆虐全球的网络流行病吗? 像这样的攻击证明我们所寻求的所有在线交易安全性尚不完善——有一天所有的机器都会突然屈服于欺诈。 欺诈的类型多种多样,但大多数黑客的目标是金融数据安全,主要是银行账户和交易的安全。
不幸的是,没有针对网络攻击死亡的移动银行应用程序开发的灵丹妙药,但肯定有一些东西可以提高支付和交易的安全性。 首先,您的移动应用程序安全项目可能涉及 3 种类型的支付:
传入
外出
系统内交易
让我们以 Uber 的一个强大的移动应用程序为例,并在其示例中研究所有三个类别。 收款是客户为您的应用程序帮助他执行的特定产品或服务而进行的付款; 一旦您的优步结束,您的信用卡就会被收取费用。 支出是由系统本身向它所代表的员工支付的款项。 当优步司机将满意的客户送到他的目的地时,系统会等待一段时间,然后自动将钱转给司机。 这个等待期的设计目的是让用户有机会抱怨他所获得的服务质量。 此选项需要用户方面的一定程度的关注 - 一旦此期限结束,客户将无法再填写投诉报告。 传出和传入的金融交易都需要将第三方支付提供商集成到系统中。
但是,系统内交易的工作方式有所不同 - 例如,系统内两个用户之间的财务操作就是其中的一个例子。 此时,由于上述系统内发生的所有交互,交易也可以在没有集成支付提供商的情况下进行。 前面描述的收费方法与其他功能一起广泛用于各种金融应用程序。
如何保护您的移动应用程序? 好,
...你需要他们在场。
“随时欢迎每一位创作者加入他的想法——为了最大限度地提高产品的可用性!”
基本上,每个以移动银行应用程序安全为核心的移动钱包都需要一定数量的功能才能使其具有吸引力和“用户使用”。 以下是被视为必不可少的功能的简短列表:
随时访问您的银行账户,风雨无阻
进行金融交易的能力,尤其是:
a) 将您的资金转入本银行系统内的任何账户。
b) 将您的资金转移到全球任何账户、信用卡或借记卡。
c) 支付任何通信服务费用 - 为您的手机充电、支付给您的互联网提供商等。
d) 支付银行系统业务逻辑中包含的任何其他第三方服务 - 公共汽车/飞机/火车票、食品、美容产品和游戏、电影和足球(或任何其他流行运动)门票。 可以通过您的应用程序进行的不同付款的数量可能会有所不同,因为这完全取决于在业务分析阶段创建的业务逻辑和要求。
e) 支付账单的能力也是一种暗示,它可以最大限度地提高用户在应用程序中的参与度,只要用户可以拥有整个范围的公用事业(煤气、电、水、暖气等)。
能够管理您的卡(阻止/取消阻止它们,设置在线支付限额,更改 PIN 或 CW2 代码,添加、订购或关闭现有卡)。
捐赠的一项功能对银行应用程序非常有用 - 表明您和您的客户参与了任何类型的慈善事业。
能够访问用户的地理位置并向他显示附近的自动取款机和最近的银行分行。
功能的范围并没有以上述结束 - 这些是我们的业务分析师在考虑如何保护在线交易时可以想到的,但总是欢迎每个创作者加入他的想法 - 为了最大化产品的可用性!
提到的功能的数量和复杂性需要银行移动应用程序的双重安全性。 但是,如何使您的在线金融交易安全?
1.系统无需保存用户的财务凭证。
一旦完成传入、传出或系统内操作,在保护在线交易的同时,有必要将所有用户的商业信息排除在支付服务提供商上。 提供商通常有一个保险库和内置的代币化系统,用于执行和保护所有金融操作。 在您的网站(或在您的应用程序中)必须插入一个特定的表单,该表单不是整个项目代码的一部分,如下图所示:
稍后,接收到的令牌和表单的数据安全协议进入我们的服务器,只有在此之后,应用程序才能向系统收费。 这种工作方式被 Stripe 支付提供商广泛使用。
尽管这种方法确实广为人知,但它存在一定的缺陷。 当您的应用程序将卡的数据发送到支付服务的服务器时,它没有提及转移的确切金额。 因此,假设地说,系统有可能提取比应有的更多的钱 - 错误或系统错误。 这个问题还没有解决,所以,虽然 Stripe 是一个方便的解决方案,用户不会被重定向到任何地方,但它仍然缺乏一个稳定的安全过程。
另一个广为人知的系统是 PayPal,其“通过 PayPal 付款”按钮。
贝宝的工作方式是一种“网络应用支付处理”——当用户点击支付屏幕时,它会自动将用户权利转移到贝宝平台。 当客户进一步通过该服务付款时,您的移动银行应用程序必须创建一个发送到 PayPal 的实体,该实体会通知是否已收到付款。
区分 Stripe 和 PayPal 移动支付网关的关键点在于,在 PayPal 中,您可以查看实际转移的资金金额,但会将您重定向到他们的平台; 另一方面,Stripe 不会让您关注任何外部链接,但“精确金额”移动支付安全问题可能会分散您未来用户的注意力。
2. 系统必须保证代币的安全和健全。
如果您正在构建具有订阅选项的安全移动应用程序 - 那么它必须安全地存储在服务的数据库中。 项目的结构应该只允许将这些代币保留在那里——不包括公开资料或任何其他实体的选项。
另一种保护金融交易的方法是将 HTTPS 保护加密到网站结构中。 如果网站上没有 - 用户不应将资金转移到第三方资源,以保护您的在线金融交易。
3. 尽量避免“例外、支付、重复”错误。
您的支出(资金转移,当系统将资金转移给用户时)可能发生的最可怕的事情是“无限循环”。 对用户的支付是系统运行的后台任务之一,如果发生异常 - 任务将重新运行。 因此,每笔交易只能反复发送给一个用户。
如何防止这种情况:
- 设置后台任务的管理器,使财务任务不会陷入无限循环;
- 在编辑或创建元素的每个阶段,如果您在日志文件中记录它会有所帮助,这样就不会忽略任何更改。 即使发生了循环,至少你能注意到它的原因和钱去了哪里,这样它就可以退还给用户。
简而言之,安全银行应用程序需要遵循以下规则:
无需存储用户的财务凭证
在没有 HTTPS 保护的情况下,无法向平台转账。
每个服务器的响应或请求、每个动作、webhook 或回调都应记录在最详细的信息中
支付流程应尽量简化,最大限度地依赖支付服务提供商,尽可能避免内部创建电子钱包
始终花时间测试应用程序的运行方式,因为只有在测试过程中才能预测所有负面情况
强烈建议使用网络钩子和回调
始终检查支付系统为您提供的报告,因为您可以发现那里是否发生问题
万物的移动解决方案。
如今,每个企业最常见的趋势之一是通过移动应用安全和移动应用加密实现移动化。 从大型金融公司到最小的街角商店,这些智能小工具已经占据了世界的每一个角落。 此外,通过 Statista 的见解快速消化表明,这种趋势只会在未来 7 年内增长。
无论您选择哪个平台——iOS 或 Android 应用程序安全,保护网上银行都是一个复杂但真正有益的过程。 试想一下,你有潜力为用户和他们的资金培养安全感,让数百万人在夜间安息……这不是改变生活的未来吗?
由亚历克斯·阿韦里亚诺夫、奥列格·察连科和埃琳娜·贝萨拉波娃撰写。