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