一种URL Host校验方式学习
方法概述
在APP测试的过程中发现了一种URL Host的权限校验方式,检测的方法与EndWith检测类似,但是更加的灵活;通过对特定的XML文件解析得到URL Scheme和URL Host的白名单,并通过自定义PermissionManager类中的校验策略完成校验;个人感觉这种校验的方式具有比较好的灵活性可以做为一个良好的URL Host检测模板。
详细说明
整个URL Host的校验可以分为两个大部分,一个是对URL Host的存储和提取,另一个是自定义校验方式,下面将从这两个部分分别说明实现的形式;
XML的存储和解析
下面是XML的部分内容,URL Host的白名单会作为整个APP配置文件中的一部分,一起存储在config.xml文件中。通过不同格式的XML解析可以提取出这个部分并形成一个Permission List进行管理
1 |
|
可以看到每条数据包含两个内容:
- origin : 用于记录URL Scheme和URL host
- subdomains :用于规定是否允许其子域名通过校验
XML中记录的白名单会通过XmlResourceParser完成解析并形成下面这种Config类(只节选了关于PermissionManager的片段)
1 | public class Config { |
PermissionManager 权限校验部分
首先贴一下PermissionManager的代码:
1 | public class PermissionManager { |
该class中包含两个属性:
- Config mConfig : XML文件经过解析以后形成的class,在对象创建的时候初始化
- Map<String, Boolean> mValidMap : 记录经过校验的URL的状态方便下次查询
两个方法 :
- isValid : 查询HashMap中是否已经记录了URL的信息,如果没有则调用initPermission来检测,并记录在HashMap中;
- initPermission : 完成具体的URL Host检测的过程;