php - 使用 JQuery 和 CodeIgniter 将注释安全地写入数据库?

标签 php jquery codeigniter escaping

所以我在 Codeigniter 中编写了一个使用 PHP 和 Jquery 的注释脚本。

基本上,用户写一条评论,然后点击提交。然后,我使用 AJAX 调用服务器端脚本来检查、验证和插入评论。

在 JQuery 端,我使用 encodeURIComponent

进行转义
$.ajax({
    url : 'http://domain.com/ajax/post_comment',
    type : 'post',
    data : encodeURIComponent( $(this).val() ),
    success : function(data){
                //more code here
            }
});

在 PHP 端,正如我所说,我正在使用 CodeIgniter,因此我使用 CodeIgniter 提供的 Binding 转义注释,如下所示

$sql = "INSERT INTO video_comments VALUES(NULL, ?);
$this->db->query($sql,array($comment));

这工作得很好,可以转义和插入

!"£$%^&*()_+=-}{~@:?></.,#;][¬`|

现在的问题是,它不能插入'(单引号)或\(反斜杠)?我猜是因为它没有正确地转义它们?

一个线索可能是它确实允许我插入 \' 我猜它逃脱了单引号?但我本以为 CodeIgniters 绑定(bind)至少可以解决这个问题?

有什么想法吗?

最佳答案

更新:根据下面的讨论,查询绑定(bind)使查询本身安全,因此无需单独使用转义函数。

恕我直言,如果您不太(又太)担心性能,最好、最安全的方法是使用 CodeIgniter Active Record Class 进行查询。 IMO,如果禁用 Active Record,性能只会略有提高,但如果启用并使用,则会带来很多好处。

http://codeigniter.com/user_guide/database/active_record.html

关于php - 使用 JQuery 和 CodeIgniter 将注释安全地写入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8607867/

相关文章:

php - 如何将 PayPal 交易详细信息放入 Codeigniter 中的数据库

jquery - 如何在codeigniter中使用ajax加载页面的一部分

php - 获取复选框的多个值

javascript - 为什么数组中的项目未定义?

php - 为什么键盘和字母在 NetBeans 中不匹配?

php - Laravel - 模型自引用 belongsToMany 与其他关系和具有多个限制的查询

javascript - Php Javascript 如何从字符串中删除唯一想要的文本?

php - 已弃用的 Ajax 或 JQuery 命令导致无结果返回

javascript - JQuery 动画和效果通过 $.when() 和 then() 适用于多个元素

jquery - 我自己的点赞按钮: Django + Ajax -- How?