【问题标题】:CI - Sanitizing the form inputs from quotesCI - 清理引号中的表单输入
【发布时间】:2015-02-26 15:27:22
【问题描述】:

我遇到了一个问题,如果我提交单引号 ( ' ) 或双引号 ( " ) 之类的字符,并且如果我在提交表单后保留这些值(例如,由于验证失败),我正在获取表单' 和 "

等值

我尝试了很多东西,比如 -

  • 通过$this->input->post("field", true) 而不是$_POST 访问表单值,
  • 从配置中启用 XSS 过滤,
  • 使用$this->security->xss_clean($data);

但没有任何帮助。 最后,我去了 system\helpers\form_helper.php 并在第 177 行更改了函数 form_input 如下 -

上一个$defaults = array('type' => 'text', 'name' => (( ! is_array($data)) ? $data : ''), 'value' => $value);

之后$defaults = array('type' => 'text', 'name' => (( ! is_array($data)) ? $data : ''), 'value' => html_entity_decode($value, ENT_QUOTES, 'UTF-8'));

到目前为止,这已经解决了我的问题,没有任何中断。

我只想知道这是否是达到目的的正确方法?

【问题讨论】:

    标签: php forms codeigniter sanitization codeigniter-form-helper


    【解决方案1】:

    我不太确定您遇到的问题,但编辑系统文件来修复它不是一个好主意。您应该从不更改系统文件夹中的任何内容,进行更改的正确方法是通过创建文件application/helpers/MY_form_helper.php 来扩展表单助手(使用您自己的前缀,在application/config/config.php 中定义)并在文件内部覆盖您要更改的功能。它应该看起来像这样......

    <?php
    defined('BASEPATH') OR exit('No direct script access allowed');
    
    if ( ! function_exists('form_input'))
    {
        /**
        * Text Input Field
        *
        * @param    mixed
        * @param    string
        * @param    string
        * @return   string
        */
        function form_input($data = '', $value = '', $extra = '')
        {
            $defaults = array(
                'type' => 'text',
                'name' => is_array($data) ? '' : $data,
                'value' => html_entity_decode($value, ENT_QUOTES, 'UTF-8')
            );
            return '<input '._parse_form_attributes($data, $defaults).$extra." />\n";
        }
    }
    
    /* End of file MY_form_helper.php */
    /* Location: ./application/helpers/MY_form_helper.php */
    

    【讨论】:

      猜你喜欢
      • 2011-08-13
      • 2014-08-03
      • 2011-06-02
      • 2015-05-21
      • 1970-01-01
      • 2020-07-14
      • 1970-01-01
      • 2022-01-14
      • 2013-03-21
      相关资源
      最近更新 更多