用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1997|回复: 2
收起左侧

[安全] 新人求助,关于CI XSS过滤及转义问题

[复制链接]
发表于 2018-1-10 17:13:56 | 显示全部楼层 |阅读模式
我在使用的 CI 的时候,如果开启XSS过滤
PHP复制代码
[color=rgb(102, 0, 0)][backcolor=rgb(247, 250, 255)][font=&quot][size=9pt]$config[/size][/font][/backcolor][/color][color=rgb(67, 67, 67)][backcolor=rgb(247, 250, 255)][font=&quot][size=9pt][[/size][/font][/backcolor][/color][color=rgb(119, 119, 119)][backcolor=rgb(247, 250, 255)][font=&quot][size=9pt]'global_xss_filtering'[/size][/font][/backcolor][/color][color=rgb(67, 67, 67)][backcolor=rgb(247, 250, 255)][font=&quot][size=9pt]] [/size][/font][/backcolor][/color][color=rgb(55, 113, 169)][backcolor=rgb(247, 250, 255)][font=&quot][size=9pt]= [/size][/font][/backcolor][/color][color=rgb(0, 0, 255)][backcolor=rgb(247, 250, 255)][font=&quot][size=9pt]TURE[/size][/font][/backcolor][/color][color=rgb(67, 67, 67)][backcolor=rgb(247, 250, 255)][font=&quot][size=9pt];[/size][/font][/backcolor][/color]
复制代码

控制器接收表单数据:
PHP复制代码
 
[color=#660000]$img = $data['upload_data']['file_name'];
[/backcolor][/color][color=#660000]$title = $this->input->post('title');
[/backcolor][/color][color=#660000]$category
= $this->input->post('category');
[/backcolor][/color][color=#660000]$tag
= $this->input->post('tag');
[/backcolor][/color][color=#660000]$abstract
= $this->input->post('abstract');
[/backcolor][/color][color=#660000]$weight
= $this->input->post('weight');
[/backcolor][/color][color=#660000]$content
= $this->input->post('content');
 
复制代码

我在插入数据库的时候CI会自动过滤掉html、js标签,用[recomve]代替。请问怎么解决这个问题?我不想让他过滤掉。

如果我关闭XSS过滤
PHP复制代码
[color=rgb(102, 0, 0)][backcolor=rgb(247, 250, 255)][font=&quot][size=9pt]$config[/size][/font][/backcolor][/color][color=rgb(67, 67, 67)][backcolor=rgb(247, 250, 255)][font=&quot][size=9pt][[/size][/font][/backcolor][/color][color=rgb(119, 119, 119)][backcolor=rgb(247, 250, 255)][font=&quot][size=9pt]'global_xss_filtering'[/size][/font][/backcolor][/color][color=rgb(67, 67, 67)][backcolor=rgb(247, 250, 255)][font=&quot][size=9pt]] [/size][/font][/backcolor][/color][color=rgb(55, 113, 169)][backcolor=rgb(247, 250, 255)][font=&quot][size=9pt]= false[/size][/font][/backcolor][/color][color=rgb(67, 67, 67)][backcolor=rgb(247, 250, 255)][font=&quot][size=9pt];[/size][/font][/backcolor][/color]
复制代码

控制器接收表单数据:
PHP复制代码
 
[color=#6600]$img
= htmlspecialchars($data['upload_data']['file_name']);
[/backcolor][/color][color=#6600]$title
= htmlspecialchars($this->input->post('title'));
[/backcolor][/color][color=#6600]$category
= htmlspecialchars($this->input->post('category'));
[/backcolor][/color][color=#6600]$tag
= htmlspecialchars($this->input->post('tag'));
[/backcolor][/color][color=#6600]$abstract
= htmlspecialchars($this->input->post('abstract'));
[/backcolor][/color][color=#6600]$weight
= htmlspecialchars($this->input->post('weight'));
[/backcolor][/color][color=#6600]$content
= htmlspecialchars($this->input->post('content'));
 
复制代码

然后我在页面输出的时候,所有的html、js、php标签全都不见了
以下两段对比
CI:
PHP复制代码
 
connect_error) {
    die("连接失败: " . $conn->connect_error);
}
 
//查询数据条数的函数
function getCount($table){
    global $con;
    $result = $conn->query("select count(*) as linecount from $table");
    $count = $result->fetch_all(3);
    return $count[0][0];
}
//分页函数
function getPageData($table,$pageCount,$recoredCount,$order){
    global $con;
    $pageCount=($pageCount-1)*$recoredCount;
    $sql="select * from $table order by $order desc limit $pageCount,$recoredCount";
    $result=$conn->query($sql);
    $pageDate=$result->fetch_all(3);
    return $pageDate;
}
?>
 
复制代码

原生PHP:
PHP复制代码
 
<?php
header("Content-type: text/html; charset=utf-8");
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "dbname";
// 创建连接
$con = new mysqli($servername, $username, $password, $dbname);
mysqli_set_charset($conn, "utf8");
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
 
//查询数据条数的函数
function getCount($table){
    global $con;
    $result = $conn->query("select count(*) as linecount from $table");
    $count = $result->fetch_all(3);
    return $count[0][0];
}
//分页函数
function getPageData($table,$pageCount,$recoredCount,$order){
    global $con;
    $pageCount=($pageCount-1)*$recoredCount;
    $sql="select * from $table order by $order desc limit $pageCount,$recoredCount";
    $result=$conn->query($sql);
    $pageDate=$result->fetch_all(3);
    return $pageDate;
}
?>
 
复制代码


请问这种情况怎么解决???



发表于 2018-1-15 10:47:44 | 显示全部楼层
看了一坨东西不知道在说什么,你有看过你发出来的东西是什么样子吗?
发表于 2018-2-2 10:39:32 | 显示全部楼层
不要全局开启xss过滤,在需要的地方再使用,如果觉得麻烦需要手动扩展一下输入类。

本版积分规则