SecurityBundle配置(“安全”)
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.4,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
SecurityBundle配置(“安全”)
安全系统是Symfony的最强大的部分之一,,在很大程度上可以通过配置控制。ob娱乐下载
完整的默认配置
以下是完整的安全系统的默认配置。每个部分将在下一节中解释。
2.4
支持安全防火墙限制到一个特定的主机是在Symfony 2.4中引入的。ob娱乐下载
- YAML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206
# app / config / security.yml安全:access_denied_url:~#例子:/ foo / error403#策略可以:没有,迁移,无效session_fixation_strategy:迁移hide_user_not_found:真正的always_authenticate_before_granting:假erase_credentials:真正的access_decision_manager:策略:肯定的allow_if_all_abstain:假allow_if_equal_granted_denied:真正的acl:#任何名称中配置原则。dbal节连接:~缓存:id:~前缀:sf2_acl_供应商:~表:类:acl_classes条目:acl_entriesobject_identity:acl_object_identitiesobject_identity_ancestors:acl_object_identity_ancestorssecurity_identity:acl_security_identities选民:allow_if_object_identity_unavailable:真正的编码器:#的例子:Acme \ DemoBundle \ \ User1实体:sha512Acme \ DemoBundle \ \ User2实体:算法:sha512encode_as_base64:真正的迭代:5000年# PBKDF2编码器#有关详细信息,请参阅以下关于PBKDF2安全与速度Acme \ \类\名称:算法:pbkdf2hash_algorithm:sha512encode_as_base64:真正的迭代:1000年#例子选项/值对一个定制的编码器的样子Acme \ DemoBundle \ \ User3实体:id:my.encoder.id提供者:#需要#的例子:my_in_memory_provider:记忆:用户:foo:密码:喷火角色:ROLE_USER栏:密码:酒吧角色:[ROLE_USER,ROLE_ADMIN]my_entity_provider:实体:类:SecurityBundle:用户属性:用户名manager_name:~#示例自定义服务提供方程序my_some_custom_provider:id:~#链一些供应商my_chain_provider:链:提供者:(my_in_memory_provider,my_entity_provider]防火墙:#需要#的例子:somename:模式:. *#防火墙限制到一个特定的主机主持人:admin \ .example \ comrequest_matcher:some.service.idaccess_denied_url:/ foo / error403access_denied_handler:some.service.identry_point:some.service.id供应商:some_key_from_above#管理每个防火墙存储会话信息#请参见下面的“防火墙”的更多细节背景:context_key无状态:假x509:供应商:some_key_from_abovehttp_basic:供应商:some_key_from_abovehttp_digest:供应商:some_key_from_aboveform_login:#在这里提交登录表单check_path:/ login_check#这里的用户被重定向时需要登录login_path:/登录#如果情况属实,提出了用户登录表单,而不是重定向use_forward:假#登录成功重定向选择(深入阅读下文)always_use_default_target_path:假default_target_path:/target_path_parameter:_target_pathuse_referer:假#登录失败重定向选择(深入阅读下文)failure_path:/ foofailure_forward:假failure_path_parameter:_failure_pathfailure_handler:some.service.idsuccess_handler:some.service.id#用户名和密码字段的字段名username_parameter:_usernamepassword_parameter:_password# csrf标记的选项csrf_parameter:_csrf_token意愿:进行身份验证csrf_provider:my.csrf_provider.id#默认情况下,登录表单* *必须发表一篇文章,而不是一个post_only:真正的remember_me:假#默认情况下,提交身份验证之前,必须存在一个会话请求#如果虚假,那么要求::hasPreviousSession不是叫在身份验证#新在Symfonob娱乐下载y 2.3require_previous_session:真正的remember_me:token_provider:的名字关键:someS3cretKey名称:NameOfTheCookie生命周期:3600年#在几秒钟内路径:/ foo域:somedomain.foo安全:假httponly:真正的always_remember_me:假remember_me_parameter:_remember_me注销:路径:/注销目标:/invalidate_session:假delete_cookies:答:{路径:零,域:零}b:{路径:零,域:零}处理程序:[some.service.id,another.service.id]success_handler:some.service.id匿名:~#默认值为任何防火墙和选项some_firewall_listener:模式:~安全:真正的request_matcher:~access_denied_url:~access_denied_handler:~entry_point:~供应商:~无状态:假背景:~注销:csrf_parameter:_csrf_tokencsrf_provider:~意愿:注销路径:/注销目标:/success_handler:~invalidate_session:真正的delete_cookies:#原型名称:路径:~域:~处理程序:[]匿名:关键:4 f954a0667e01switch_user:供应商:~参数:_switch_user角色:ROLE_ALLOWED_TO_SWITCHaccess_control:requires_channel:~#使用urldecoded格式路径:~#例子:^ /资源/路径主持人:~知识产权:~方法:[]角色:[]role_hierarchy:ROLE_ADMIN:[ROLE_ORGANIZER,ROLE_USER]ROLE_SUPERADMIN:(ROLE_ADMIN)
表单登录配置
当使用form_login
身份验证防火墙下侦听器,有几种常见的选项配置“形式登录”体验。
更多细节,请参阅如何自定义表单登录吗。
登录表单和流程
login_path
(类型:字符串
违约:/登录
)这是路线或路径,用户将被重定向到(除非use_forward
被设置为真正的
当他们试图访问受保护的资源,但不是完全验证。这条路必须被正常访问,用户转向,否则你可能会创建一个重定向循环。详情,请参阅“避免常见的陷阱”。
check_path
(类型:字符串
违约:/ login_check
)这是您的登录表单的路径或路径必须服从。防火墙拦截任何请求(帖子
请求,默认情况下)这个URL和处理提交的登录凭证。确保这个URL是由主防火墙(即不创建一个单独的防火墙
check_path
URL)。use_forward
(类型:布尔
违约:假
)如果你想让用户转发到登录表单,而不是重定向,设置这个选项真正的
。username_parameter
(类型:字符串
违约:_username
)这是字段名,你应该给你的登录表单的用户名字段。当你提交表单check_path
,安全系统将寻找一个POST参数与这个名字。password_parameter
(类型:字符串
违约:_password
)这是字段名的密码字段,你应该给你的登录表单。当你提交表单check_path
,安全系统将寻找一个POST参数与这个名字。post_only
(类型:布尔
违约:真正的
默认情况下,你必须提交你的登录表单check_path
作为一个POST请求的URL。通过设置这个选项假
你可以发送一个GET请求到check_path
URL。
重定向后登录
always_use_default_target_path
(类型:布尔
违约:假
)default_target_path
(类型:字符串
违约:/
)target_path_parameter
(类型:字符串
违约:_target_path
)use_referer
(类型:布尔
违约:假
)
使用PBKDF2编码器:安全性和速度
2.2
PBKDF2密码编码器是在Symfony 2.2中引入的。ob娱乐下载
的PBKDF2编码器提供了一个高水平的密码安全,建议由国家标准与技术研究院(NIST)。
你可以看到的一个例子pbkdf2
编码器在YAML阻止这个页面上。
但使用PBKDF2还权证警告:使用它(有大量的迭代)减缓这一过程。因此,PBKDF2应该小心使用和护理。
良好的配置是在至少1000次迭代和sha512散列算法。
使用BCrypt密码编码器
谨慎
要使用这个编码器,你要么需要使用PHP版本5.5或安装ircmaxell / password-compat图书馆通过作曲家。
2.2
BCrypt密码编码器是在Symfony 2.2中引入的。ob娱乐下载
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8
# app / config / security.yml安全:#……编码器:ob娱乐下载Symfony核心组件\ \安全\ \ \用户:算法:bcrypt成本:15
的成本
可以的吗4-31
并确定编码的密码将会多久。每个增量的成本
双打所花费的时间编码密码。
如果你不提供成本
选项,默认的成本13
使用。
请注意
你可以在任何时候改变成本——即使你已经有一些密码编码使用不同的成本。新密码将编码使用新的成本,虽然已经编码的使用成本将验证编码时使用。
盐为每个新密码是自动生成,不需要坚持。自一个编码的密码包含盐用于编码,坚持单独编码密码就足够了。
请注意
所有的编码的密码60
字符,所以确保分配足够的空间被持久化。
防火墙的上下文
大多数应用程序只需要一个防火墙。但是如果您的应用程序做使用多个防火墙,你会发现,如果你在一个防火墙身份验证,你不是自动验证。换句话说,系统不共享一个共同的“上下文”:每个防火墙就像一个独立的安全系统。
然而,每个防火墙有一个可选的上下文
键(默认为防火墙的名称),这是用于存储和检索安全数据和从会话。如果这个键是跨多个防火墙设置为相同的值,“上下文”可以被共享:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11
# app / config / security.yml安全:#……防火墙:somename:#……背景:my_contextothername:#……背景:my_context
http摘要认证
使用http摘要认证需要提供领域和重点:
- YAML
- XML
- PHP
1 2 3 4 5 6 7
# app / config / security.yml安全:防火墙:somename:http_digest:关键:“a_random_string”域:“安全api”