gpt4 book ai didi

codeigniter - SQL 注入(inject)和 Codeigniter

转载 作者:行者123 更新时间:2023-12-04 00:48:43 34 4
gpt4 key购买 nike

关于 Codeigniter 及其输入处理能力的一些疑问。有些可能有点奇怪,但它们仍然是怀疑。

  • 如果我使用 Active Record CodeIgniter 中的类函数,我的输入是否可以防止 SQL 注入(inject)?
  • 我在某处读到它,但我不明白它是怎么做的?或者为什么?
  • xssclean 是否也以任何方式处理 SQL 注入(inject)?
  • 最佳答案

    is my input prevented against SQL injection?



    不完全是“自动”,但它确实提供了参数化查询。无论是否使用 CodeIgniter,您都应该尽可能使用参数化查询而不是查询字符串黑客攻击。
    $bof= "a'b";
    $zot= 'a\b';

    // Insecure! Don't do this!
    //
    $this->db->query("SELECT foo FROM bar WHERE bof='$bof' AND zot='$zot'");

    // Secure but annoying to write
    //
    $this->db->query("SELECT foo FROM bar WHERE bof='".$this->db->escape($bof)."' AND zot='".$this->db->escape($zot)."'");

    // This is what you want
    //
    $this->db->query('SELECT foo FROM bar WHERE bof=? AND zot=?', array($bof, $zot));

    请注意,这与“输入”无关:当您从字符串进行 SQL 查询时,您必须使用参数化或转义以使其适合,无论它们是否是用户输入。这是一个简单的正确性问题;安全性是这种正确性的副作用。

    同样,当您将文本输出为 HTML 时,您需要对 < 进行 HTML 编码。 , &"那么里面的人物。如果您碰巧在没有在 SQL 或 HTML 中转义的情况下使用它们来转义或删除将来可能会遇到麻烦的字符,那么尝试摆弄输入以转义或删除这些字符绝对没有用。您将通过在 HTML 中进行意外的 SQL 转义(这就是您在编写糟糕的应用程序中看到自乘反斜杠的原因)和在 SQL 中不需要的 HTML 转义来破坏您的输出。如果您从直接用户输入以外的其他地方获取文本(例如,数据库中已经存在的 Material ),您根本不 protected 。

    Also does xssclean deal with SQL injection in any way?



    不,它是针对 HTML 注入(inject)的。但它是 比一文不值更糟 .永远不要使用它。

    “XSS 过滤”完全是假的(同样是 CodeIgniter 或其他任何人的)。需要通过正确的 HTML 转义输出来防止 XSS,而不是修改输入。如果您的应用程序尚不安全,XSS 过滤将无法充分保护您;充其量它会混淆你现有的缺陷并给你一种虚假的安全感。它还会破坏很多 CI 认为看起来像标签的有效输入。

    关于codeigniter - SQL 注入(inject)和 Codeigniter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3797613/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com