php codeigniter安全,php – codeigniter中的安全性

下午好,

我对CodeIgniter的安全性有一些疑问,首先是:

我有一个控制器:news.php,其中有一个名为view的方法

例:

class News extends CI_Controller{

public function view( $id )

{

$this->load->model('news_model');

$this->news_model->get_by_id( $id );

// ...

}

}

这种工作形式安全吗?没有URL注入SQL的风险?考虑到这个页面被访问,所以mywebpage / news / number_id.过滤intval()或不必要的过程会很有趣吗?

我的第二个问题是:

默认情况下,CodeIgniter xss过滤器可以发布和获取,但未知的是通过CodeIgniter过滤HTML的方法,我在CodeIgniter中创建了一个帮助器,有一些类似于本机CodeIgniter的方法吗?

function remove_xss_html($string){

if( is_array( $string ) ){

$return_array = array();

foreach( $string as $item )

{

if(!get_magic_quotes_gpc())

{

$return_array[] = addslashes( htmlspecialchars( strip_tags( $item ) ) );

}

else

{

$return_array[] = htmlspecialchars( strip_tags( $item ) );

}

}

return $return_array;

}

else

{

return htmlspecialchars( strip_tags( $string ) );

}

}

第三个也是最后一个问题是:

如果我发送变量$this->输入 – &GT post(‘my_var’)直接到没有过滤器的数据库,我运行sql注入的风险? CodeIgniter或过滤器如此安全?

IMPORTANTE:我的英语不是很好,我用google翻译并修复了我的能力.

谢谢你们 …

解决方法:

如果您使用Active Record类进行数据库交互,则数据将自动转义:

Beyond simplicity, a major benefit to using the Active Record features is that it allows you to create database independent applications, since the query syntax is generated by each database adapter. It also allows for safer queries, since the values are escaped automatically by the system.

如果没有,并且您手动运行查询,则需要自行转义.

关于你的功能的一些建议:

public function view( $id )

{

$this->load->model('news_model');

$this->news_model->get_by_id( $id );

// ...

}

如果URL中不存在$id,您将收到错误通知.设置默认值:

public function view( $id = NULL )

然后检查控制器中的值.例:

if ( ! $id)

{

redirect('somwhere/else');

}

另外,确保在继续之前得到结果(如果没有找到记录,我假设你的模型在这里返回false):

$record = $this->news_model->get_by_id( $id );

if ( ! $record) // redirect with error message or something

您可以根据需要验证$ids类型或完整性,但为了简单起见,我只是将其传递给模型,如果没有找到记录则返回false.

标签:php,sql-injection,codeigniter

来源: https://codeday.me/bug/20190530/1186409.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值