封装即绘制强边界。在 Web 浏览器中,这可能意味着确保您的移动代码不会被其他移动代码滥用。在服务器上,这可能意味着区分已验证数据和未验证数据、区分一个用户的数据和另一个用户的数据,或者区分允许用户查看的数据和不允许用户查看的数据。
"Resources": {
"RDSDBExample": {
"Type": "AWS::RDS::DBInstance",
"Properties": {
"StorageEncrypted": false,
"DBName": "Test DB",
"DBInstanceClass": "db.m4.large"
}
}
}
"Resources": {
"RedshiftClusterTest": {
"Type": "AWS::Redshift::Cluster",
"Properties": {
"DBName": "mydb",
"MasterUsername": "master",
"MasterUserPassword": "masterPass",
"NodeType": "ds2.xlarge",
"ClusterType": "single-node",
}
}
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "My SNS topic",
"Resources": {
"MySNSTopic": {
"Type": "AWS::SNS::Topic",
"Properties": {
"Subscription": [
{
"Endpoint": "MySNSEndpoint",
"Protocol": "sqs"
}
],
"TopicName": "MyTopic"
}
}
}
}
AWSTemplateFormatVersion: 2010-09-09
Description: My SNS Topic
Resources:
MySNSTopic:
Type: AWS::SNS::Topic
Properties:
Subscription:
- Endpoint: "MySNSEndpoint"
Protocol: "sqs"
TopicName: "SampleTopic"
kSecAccessControlUserPresence
:限制为通过 Touch ID 或密码访问。不要求 Touch ID 可用或已注册。添加或删除指纹后,仍可通过 Touch ID 访问项目。kSecAccessControlTouchIDAny
:限制为通过 Touch ID 使用任何已注册的指纹访问。添加或删除指纹后,项目不会失效。kSecAccessControlTouchIDCurrentSet
:限制为通过 Touch ID 使用当前已注册的指纹访问。添加或删除指纹后,项目将会失效。kSecAccessControlTouchIDCurrentSet
属性阻止以后添加指纹或删除现有指纹。kSecAccessControlTouchIDAny
限制,该项限制允许任何以后注册的指纹对密钥链项目解除锁定:
...
SecAccessControlRef sacRef = SecAccessControlCreateWithFlags(kCFAllocatorDefault,
kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly,
kSecAccessControlTouchIDCurrentSet,
nil);
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:(__bridge id)kSecClassGenericPassword forKey:(__bridge id) kSecClass];
[dict setObject:account forKey:(__bridge id)kSecAttrAccount];
[dict setObject:service forKey:(__bridge id) kSecAttrService];
[dict setObject:token forKey:(__bridge id)kSecValueData];
...
[dict setObject:sacRef forKey:(__bridge id)kSecAttrAccessControl];
[dict setObject:@"Please authenticate using the Touch ID sensor." forKey:(__bridge id)kSecUseOperationPrompt];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
OSStatus status = SecItemAdd((__bridge CFDictionaryRef)dict, nil);
});
...
kSecAccessControlUserPresence
:限制为通过 Touch ID 或密码访问。不要求 Touch ID 可用或已注册。添加或删除指纹后,仍可通过 Touch ID 访问项目。kSecAccessControlTouchIDAny
:限制为通过 Touch ID 使用任何已注册的指纹访问。添加或删除指纹后,项目不会失效。kSecAccessControlTouchIDCurrentSet
:限制为通过 Touch ID 使用当前已注册的指纹访问。添加或删除指纹后,项目将会失效。kSecAccessControlTouchIDCurrentSet
属性阻止以后添加指纹或删除现有指纹。kSecAccessControlTouchIDAny
限制,该项限制允许任何以后注册的指纹对密钥链项目解除锁定:
...
let flags = SecAccessControlCreateWithFlags(kCFAllocatorDefault,
kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly,
.TouchIDAny,
nil)
var query = [String : AnyObject]()
query[kSecClass as String] = kSecClassGenericPassword
query[kSecAttrService as String] = service as AnyObject?
query[kSecAttrAccount as String] = account as AnyObject?
query[kSecValueData as String] = secret as AnyObject?
...
query[kSecAttrAccessControl as String] = sacRef
query[kSecUseOperationPrompt as String] = "Please authenticate using the Touch ID sensor."
SecItemAdd(query as CFDictionary, nil)
...
<cfdump>
标签可能会泄漏敏感信息。<cfdump>
标签。虽然在软件开发过程中允许使用 <cfdump>
标签,但是作为开发者,对代码负责是 Web 应用程序开发的重要部分,所以应该仔细考虑是否能够使用每一个 <cfdump>
标签。X-Frame-Options
标头指定组帧策略。X-Frame-Options
标头指定组帧策略。