ypc_999 2013-09-27 16:06:19 6561次浏览 8条回复 0 0 0

在输入框内输入: <script>alert("1")</script>

执行了,并写入数据库

大家有什么好办法解决吗?

  • 回复于 2013-09-27 16:16 举报

    在显示的时候,使用 echo CHtml::encode($content);

  • 回复于 2013-09-27 16:27 举报

    貌似没起作用

    <?php $form=$this->beginWidget('CActiveForm', array('id'=>'sign-form','enableAjaxValidation'=>true,));?>
    <div class="row">
        <?php echo CHtml::encode($model->content);?>
        <?php echo $form->labelEx($model,'content'); ?>
        <?php echo $form->textArea($model,'content',array('rows'=>6, 'cols'=>50)); ?>
        <?php echo $form->error($model,'content'); ?>
    </div>
    
    <div class="row buttons">
        <?php echo CHtml::submitButton($model->isNewRecord ? 'Submit' : 'Save'); ?>
    </div>
    	
    
    <?php $this->endWidget(); ?>
    
  • 回复于 2013-09-27 16:35 举报

    不在输入的时候做控制吗?

  • 回复于 2013-09-27 17:50 举报

    昂,echo CHtml::encode($content);是用来显示的,用了后,显示出来的就是一段字符串,而不是一段js了。

  • 回复于 2013-09-27 17:53 举报

    如果你只想人输入正常的字母数字中文或者下划线,你可以在model的rule里面定义。

  • 回复于 2013-09-29 15:19 举报

    我在model里面把输入的数据,用CHtml::encode过滤一遍,$sign->content=CHtml::encode($sign->content);
    ,呵呵,问题解决了,js插入数据库的形态为:<script>alert(&quot;3&quot;)</script>

  • 回复于 2014-10-09 19:21 举报

    打开这个页面,会弹出1

  • 回复于 2016-04-16 16:00 举报

    入库的时候不做操作,用自带的AR进行处理,输出的时候利用CHtml::encode()处理即可
    参考文章 yii过滤xss代码,防止sql注入教程

您需要登录后才可以回复。登录 | 立即注册