1# 文件子系统变更说明 2 3## cl.CoreFileKit.1 setSecurityLabel接口行为变更 4 5**访问级别** 6 7公开接口 8 9**变更原因** 10 11setSecurityLabel接口未对设置的安全等级进行校验,未阻止应用将高风险等级数据设置为低风险等级,有安全风险,需要进行整改。 12 13**变更影响** 14 15该变更为不兼容变更。 16 17变更前:应用数据如果已设置过等级,仍可以降低数据安全等级,调用以下代码接口可设置成功。 18 19变更后:应用数据设置过数据风险等级后,无法降低数据风险等级,接口抛错13900020。 20 21```ts 22import {fileIo,securityLabel} from '@kit.CoreFileKit'; 23try { 24 let path = getContext().filesDir + '/text.txt'; 25 let file = fileIo.openSync(path,fileIo.OpenMode.CREATE); 26 securityLabel.setSecurityLabelSync(file.path, "s4"); 27 securityLabel.setSecurityLabelSync(file.path, "s3"); 28 console.log( "set security label s3 success"); 29} catch (err) { 30 console.log( "set security label s3 fail, " + err.message + err.code); 31} 32``` 33 34**起始API Level** 35 36API 9 37 38**变更发生版本** 39 40从OpenHarmony SDK 5.0.0.38开始。 41 42**变更的接口/组件** 43 44| 接口声明 | 变更前 | 变更后 | 45| ------------------------------------------------------------ | --------- | ------ | 46| setSecurityLabel(path:string, type:DataLevel):Promise<void> | 数据风险等级由高向低设置未做拦截 | 数据风险等级由高向低设置时抛错 | 47| setSecurityLabel(path:string, type:DataLevel, callback: AsyncCallback<void>):void | 数据风险等级由高向低设置未做拦截 | 数据风险等级由高向低设置时抛错 | 48| setSecurityLabelSync(path:string, type:DataLevel):void | 数据风险等级由高向低设置未做拦截 | 数据风险等级由高向低设置时抛错 | 49 50**适配指导** 51 52此修改为Bugfix,如果应用未多次设置数据风险等级,则无需适配,没有影响。 53 54如果应用需多次设置数据风险等级,需注意设置数据风险等级应该符合安全规范,数据风险等级仅可由低向高或设置相同的等级。将高风险等级数据设置为低风险等级接口将会抛错。 55 56## cl.CoreFileKit.2 getSecurityLabel接口行为变更 57 58**访问级别** 59 60公开接口 61 62**变更原因** 63 64getSecurityLabel接口获取未对设置过的数据风险等级的数据返回值为空字符串,不符合安全设计。需要修改实现返回“s3”。 65 66**变更影响** 67 68该变更为不兼容变更。 69 70变更前:使用接口获取未设置过数据风险等级标签的数据时,默认返回了空字符。运行以下代码,日志中会打印label为空字符串。 71 72变更后:使用接口获取未设置过数据风险等级标签的数据时,默认返回“s3”。运行以下代码,日志中会打印label为“s3”。 73 74```ts 75import {fileIo,securityLabel} from '@kit.CoreFileKit'; 76try { 77 let path = getContext().filesDir + '/text.txt'; 78 let file = fileIo.openSync(path,fileIo.OpenMode.CREATE); 79 let label = securityLabel.getSecurityLabelSync(file.path); 80 console.log( "get security label success, label is" + label); 81} catch (err) { 82 console.log( "get security label fail, " + err.message + err.code); 83} 84``` 85 86**起始API Level** 87 88API 9 89 90**变更发生版本** 91 92从OpenHarmony SDK 5.0.0.38开始。 93 94**变更的接口/组件** 95 96| 接口声明 | 变更前 | 变更后 | 97| ------------------------------------------------------------ | --------- | ------ | 98| getSecurityLabel(path:string, callback:AsyncCallback<string>): void | 默认返回空字符串 | 默认返回“s3” | 99| getSecurityLabel(path:string):Promise<string> | 默认返回空字符串 | 默认返回“s3” | 100| getSecurityLabelSync(path:string):string | 默认返回空字符串 | 默认返回“s3” | 101 102**适配指导** 103 104此变更属于Bugfix,应用无需适配。使用getSecurityLabel接口获取未设置过数据风险等级标签的数据时,默认返回“s3”。 105