Php 我需要在TbDetailView中使用CHtml::encode吗?
我使用Yii作为PHP框架,当我需要显示数据库中的一些信息时,我总是使用CHtml::encode来提高安全性 我的问题是:当我在Yii小部件(如TbDetailView或TbGridView)上显示值时,是否需要执行相同的操作 例如,下面的代码是否需要CHtml::encodePhp 我需要在TbDetailView中使用CHtml::encode吗?,php,yii,yii-chtml,Php,Yii,Yii Chtml,我使用Yii作为PHP框架,当我需要显示数据库中的一些信息时,我总是使用CHtml::encode来提高安全性 我的问题是:当我在Yii小部件(如TbDetailView或TbGridView)上显示值时,是否需要执行相同的操作 例如,下面的代码是否需要CHtml::encode <?php $this->widget('bootstrap.widgets.TbDetailView',array( 'data'=>$model, 'attributes'=>array(
<?php $this->widget('bootstrap.widgets.TbDetailView',array(
'data'=>$model,
'attributes'=>array(
'id',
'nome',
'descricao',
'origem',
array('label'=>'Tipo de Refeição', 'value'=>CHtml::encode($model->tipoRefeicao ? $model->tipoRefeicao->nome : '')),
array('label'=>'Ativo', 'value'=>CHtml::encode($model->ativo ? 'Sim' : 'Não')),
),
)); ?>
该函数是PHP函数的包装器,它将特殊字符编码为HTML实体。某些字符在HTML中具有特殊意义,并且应该由HTML实体表示。如果要保留其含义,则需要执行转换
- '&' (ampersand) becomes '&'
- '"' (double quote) becomes '"'
- "'" (single quote) becomes '''
- '<' (less than) becomes '<'
- '>' (greater than) becomes '>'
-“&”(与号)变为“&;”
-“”(双引号)变为“”
-“'”(单引号)变为“';”
-''(大于)变成''
这意味着,如果DB中的字段可能包含这些字符中的任何一个,则必须对其进行编码,否则可能会破坏HTML输出,如果不会,则无需对其进行编码谢谢您的回复@所以本质上你是说如果你不能信任信息,那么就对它进行编码。“信任”意味着它是安全的,编码不能保护你免受XSS或类似的攻击。我更愿意说,如果你不能控制/限制用户输入,那么就进行编码,例如,你允许在文本区域中设置html格式,比如说这个评论框。然后,您必须在它显示在UI中之前对其进行编码。否则,如果我在评论中添加两个像这样的结束div,它将完全破坏布局。那么,你能给我一个方向吗?我觉得这真的很有帮助,因为插入标签已经不起作用了