云中配置文件隐私设置的数据结构
Data Structure for privacy settings of profiles in the cloud
在社交应用(类似于 Facebook)中,用户的个人资料可能如下所示:
{"name": "Peter",
"gender": "Male",
"age": "22"}
现在,当人们导航到 Peter 的页面时,人们将能够看到 Peter 的年龄、性别和姓名。
假设彼得是一个非常注重隐私的人,他不想让任何人知道他的任何个人信息。我可以将数据结构化为如下所示:
{"name": "Peter",
"alias":"GoofyDuck",
"gender": "Male",
"age": "22",
"showGender": false,
"showName":false,
"showAge": false}
当其他人导航到他的页面时,由于json中设置的布尔值,该页面可能会阻止显示他的详细信息,但是,如果您有很多个人详细信息字段(例如例如,除了姓名、性别和年龄之外,Peter 还可以输入他的地址、phone 号码等),这可能会使 json 过长。
我在想也许二进制字符串上的某种类型的掩码可能更合适:
{"name": "Peter",
"gender": "Male",
"age": "22",
"privacy":"110"}
在这种情况下,"privacy" 字段上的二进制文件可以说只有他的年龄会被隐藏,因为它是 0。
我确实认为二进制字符串是在云中存储首选项的最有效方式,但我还没有看到任何使用掩码来屏蔽二进制文件含义的示例 java。
我也可以解析二进制字符串以分别获取每个值,但我认为这样效率不高。有什么方法可以分别屏蔽掉每个值吗?
我认为更好的设计是将每个 属性 与其自己的隐私设置结合起来,如下所示:
{ {"name": "Peter", "show": false},
{"alias":"GoofyDuck", "show": false},
{"gender": "Male", "show": false},
{"age": "22", "show": false} }
这种设计有几个优点:
- 比蒙版更清晰,其中设置取决于蒙版中的位置
- 您可以添加新属性而不用担心影响现有属性的隐私设置
通过这种设计,您可以拥有更多微调隐私设置,而不仅仅是布尔值:
{ {"name": "Peter", "show": "all"},
{"alias":"GoofyDuck", "show": "all"},
{"gender": "Male", "show": "friends"},
{"age": "22", "show": "none"} }
一旦你有了每个 属性 的结构,你就可以在需要时用更多的元数据来增强它,例如,
{ {"name": "Peter", "show": "all", "decorate": "bold"},
{"alias":"GoofyDuck", "show": "all"},
{"gender": "Male", "show": "friends"},
{"age": "22", "show": "none"} }
你可以有一个可见属性的白名单
{public_attributes: {"name", "gender", "age"}
请注意,您不应使用黑名单,因为这可能会在您添加新属性时意外泄露数据
在社交应用(类似于 Facebook)中,用户的个人资料可能如下所示:
{"name": "Peter",
"gender": "Male",
"age": "22"}
现在,当人们导航到 Peter 的页面时,人们将能够看到 Peter 的年龄、性别和姓名。
假设彼得是一个非常注重隐私的人,他不想让任何人知道他的任何个人信息。我可以将数据结构化为如下所示:
{"name": "Peter",
"alias":"GoofyDuck",
"gender": "Male",
"age": "22",
"showGender": false,
"showName":false,
"showAge": false}
当其他人导航到他的页面时,由于json中设置的布尔值,该页面可能会阻止显示他的详细信息,但是,如果您有很多个人详细信息字段(例如例如,除了姓名、性别和年龄之外,Peter 还可以输入他的地址、phone 号码等),这可能会使 json 过长。
我在想也许二进制字符串上的某种类型的掩码可能更合适:
{"name": "Peter",
"gender": "Male",
"age": "22",
"privacy":"110"}
在这种情况下,"privacy" 字段上的二进制文件可以说只有他的年龄会被隐藏,因为它是 0。
我确实认为二进制字符串是在云中存储首选项的最有效方式,但我还没有看到任何使用掩码来屏蔽二进制文件含义的示例 java。
我也可以解析二进制字符串以分别获取每个值,但我认为这样效率不高。有什么方法可以分别屏蔽掉每个值吗?
我认为更好的设计是将每个 属性 与其自己的隐私设置结合起来,如下所示:
{ {"name": "Peter", "show": false},
{"alias":"GoofyDuck", "show": false},
{"gender": "Male", "show": false},
{"age": "22", "show": false} }
这种设计有几个优点:
- 比蒙版更清晰,其中设置取决于蒙版中的位置
- 您可以添加新属性而不用担心影响现有属性的隐私设置
通过这种设计,您可以拥有更多微调隐私设置,而不仅仅是布尔值:
{ {"name": "Peter", "show": "all"}, {"alias":"GoofyDuck", "show": "all"}, {"gender": "Male", "show": "friends"}, {"age": "22", "show": "none"} }
一旦你有了每个 属性 的结构,你就可以在需要时用更多的元数据来增强它,例如,
{ {"name": "Peter", "show": "all", "decorate": "bold"}, {"alias":"GoofyDuck", "show": "all"}, {"gender": "Male", "show": "friends"}, {"age": "22", "show": "none"} }
你可以有一个可见属性的白名单
{public_attributes: {"name", "gender", "age"}
请注意,您不应使用黑名单,因为这可能会在您添加新属性时意外泄露数据