小编Gho*_*ola的帖子

Doctrine 2实体中的常量

假设我有以下Doctrine 2实体:

/**
 * @ORM\Entity
 * @ORM\Table(name="users")
 */
class User {

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue
     *
     * @var int
     */
    protected $id;

    /**
     * @ORM\Column(length=100)
     *
     * @var string
     */
    protected $name;

    /**
     * @ORM\Column(type="integer")
     *
     * @var int
     */
    protected $status;
}
Run Code Online (Sandbox Code Playgroud)

用户可以有多种状态,例如:Pending,Active,Suspended.整个代码(服务,存储库等)以及UI层(用户编辑表单将在下拉列表中显示它们)需要这些状态.

为了避免在多个地方定义它们,我到目前为止所做的是使用一个类来保存它们(所有应用程序的常量),它看起来有点像这样:

class App_Constants extends Zrzr_Constants
{

    protected static $_constants = array( 
        'users' => array( 
            'status' => array( 
                0 => 'Pending', 
                1 => 'Active',
                2 => 'Suspended' ) ) );

}
Run Code Online (Sandbox Code Playgroud)

基类(Zrzr_Constants)将提供一些检索它们的方法,它看起来像这样:

class Zrzr_Constants …
Run Code Online (Sandbox Code Playgroud)

php constants doctrine-orm

7
推荐指数
2
解决办法
1万
查看次数

Sesionless CSRF保护(双提交cookie)

从我在owasp.org上的讲座中,他们推荐同步器令牌模式,不鼓励使用双提交cookie.

同步器令牌模式涉及使用会话.我有理由不想使用会话(在高流量环境中性能不佳,并且很难在多台机器上共享).因此,当我留下双提交cookie时,我需要理解为什么它们可能不像会话方法那样安全.

owasp.org文章提到XSS是一个潜在的问题(因为HTML格式中包含的会话ID可以通过JS读取),但同步器令牌也会发生这个问题(因为它们也包含在表单中)隐藏的领域).简而言之,XSS使得任何CRSF保护都无用(如果你允许XSS,那么CSRF可能不是你最大的问题).

那么有什么理由我应该远离双提交饼干?

cookies session csrf

5
推荐指数
0
解决办法
3580
查看次数

标签 统计

constants ×1

cookies ×1

csrf ×1

doctrine-orm ×1

php ×1

session ×1