为何我的Cordova应用存在含信用卡表的SQLite文件?
Cordova应用中WebView SQLite文件含信用卡相关表的分析
我来帮你梳理下这个问题——在Cordova开发的Android/iOS应用里,WebView生成的/data/data/[package]/app_webview/Web Data SQLite文件里出现credit_card和whaever_credit_card表是个挺常见的场景,但具体是否存储真实卡号得结合实际情况判断:
一、这些表的来源
- 这俩表大概率是WebView的自动行为搞出来的:当你的应用里有带信用卡支付的Web视图(比如带
autocomplete="cc-number"这类属性的输入框),Android和iOS的系统WebView会自动创建这类表,用于存储浏览器自动填充的信用卡信息——这不是你的应用代码主动写入的,是WebView的默认功能。 - 只有当用户在设备上开启了信用卡自动填充,并且曾经在你的支付表单里保存过卡号时,这些表才可能有真实数据;如果用户没开自动填充,或者从没在这个表单里存过卡号,那表基本是空的。
二、验证数据是否存在的方法
你可以直接导出这个SQLite文件,用SQLite可视化工具(比如SQLiteStudio、DB Browser for SQLite)打开,执行下面的查询语句就能确认:
SELECT * FROM credit_card; SELECT * FROM whaever_credit_card;
如果返回空结果,说明没有存储真实卡号;要是有数据,那就是用户设备上的自动填充缓存数据。
三、Cordova应用的风险规避建议
- 要是你不想WebView存储这类信息,可以在支付表单的信用卡输入框上加上
autocomplete="off"属性,不过要注意部分系统WebView可能会忽略这个设置。更稳妥的方式是用Cordova的原生支付插件(比如cordova-plugin-payment-request)替代Web表单,这样能完全绕过WebView的自动填充存储机制。 - 另外一定要确保你的支付流程符合PCI DSS规范,绝对不要在应用端存储任何信用卡敏感信息——哪怕是WebView自动存的,也要确认是否合规。
内容的提问来源于stack exchange,提问作者Elo
相关产品推荐
相关产品推荐

