Security yii2如何拒绝访问Yii::$app->;数据库在视图中

Security yii2如何拒绝访问Yii::$app->;数据库在视图中,security,yii2,Security,Yii2,我们有一个开发团队,我希望专注于视图的开发人员不能直接使用Yii::$app->db进行检索、更新和删除。视图中的每个数据库操作都必须通过适当的模型对象完成。 如何?谢谢。我没有足够的声誉留下评论,所以我会写下来作为回答。 有一些模板引擎,比如可以插入Yii2的Twig。这里是到的链接。 即使您可以在Twig模板中编写php函数,您也尝试使用模板语法限制您自己和您的团队。这么简单的说 <?php echo $var ?> <?php echo htmlspecialchars(

我们有一个开发团队,我希望专注于视图的开发人员不能直接使用Yii::$app->db进行检索、更新和删除。视图中的每个数据库操作都必须通过适当的模型对象完成。
如何?谢谢。

我没有足够的声誉留下评论,所以我会写下来作为回答。 有一些模板引擎,比如可以插入Yii2的Twig。这里是到的链接。 即使您可以在Twig模板中编写php函数,您也尝试使用模板语法限制您自己和您的团队。这么简单的说

<?php echo $var ?>
<?php echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8') ?>

因此,考虑到我们拒绝使用PHP标记,只使用模板语法,可以肯定的是,没有人会/可以在
{}
中调用
Yii::$app->db
,因为我没有足够的声誉留下评论,所以我会写它作为回答。 有一些模板引擎,比如可以插入Yii2的Twig。这里是到的链接。 即使您可以在Twig模板中编写php函数,您也尝试使用模板语法限制您自己和您的团队。这么简单的说

<?php echo $var ?>
<?php echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8') ?>

因此,考虑到我们拒绝使用PHP标记,只使用模板语法,可以肯定的是,没有人会/能够在
{}

中调用
Yii::$app->db
,我相信这是许多框架使用模板引擎(如Laravel中的Blade)的主要原因(如果我错了,请纠正我)。只要Yii2视图是PHP文件,它们就可以访问其他PHP文件(控制器、模型等)所访问的任何静态/全局变量。对于Yii2,这只是框架的构建方式。没有办法取消只读Yii::$app->db的设置,您可以通过验证视图文件来查看代码,在开发人员提交代码后找到“Yii::$app->db”。我相信这是许多框架使用模板引擎(如Laravel中的Blade)的主要原因(如果我错了,请纠正我). 只要Yii2视图是PHP文件,它们就可以访问其他PHP文件(控制器、模型等)所访问的任何静态/全局变量。对于Yii2,这只是框架的构建方式。无法取消只读Yii::$app->db的设置,开发者提交代码后,您可以通过验证视图文件来查看代码,找到“Yii::$app->db”。谢谢大家。Yi2的细枝扩展自动公开{{app}},这使得视图开发人员能够破坏数据库。感谢大家。Yi2的细枝扩展自动公开{{app}},这使得视图开发人员能够破坏数据库。