代码之家  ›  专栏  ›  技术社区  ›  Kristoffer Bohmann

保护用户数据-用于方法调用、SQL和文件调用

  •  0
  • Kristoffer Bohmann  · 技术社区  · 17 年前

    我正在使用 $_GET $_POST 和 $_COOKIE

    来自内置转义函数的一些想法。。。要让果汁流动:

    • 将反斜杠添加到: \x00, \n, \r, \, ', " \x1a 使字符串对SQL查询安全-如mysql\u real\u escape\u string()。
    • [a-zA-Z0-9 _-\.] (其中“ \. 是一个转义的“.”-点)。

    感谢你的意见。谢谢

    3 回复  |  直到 17 年前
        1
  •  1
  •   Pascal MARTIN    17 年前

    由于转义也取决于发送数据的系统,我的建议是使用PHP提供的函数,专门为每个系统创建。

    不管怎样:不要再发明轮子了!

    对于许多类型的输出,已经存在转义函数/方法:使用它们!

        2
  •  0
  •   alex    17 年前

    还请注意,您必须转义(如果用户输入)的某些内容是图像位置等

    如果有人通过此链接热链接到图像(例如化身)

    http://yoursite.com/admin/user/delete/1

    <img class="avatar" alt="<?php echo $userName; ?>" src="<?php $avatarUrl; ?>" />
    

    如果以管理员身份登录,则可能会意外删除用户。当然,希望这种删除是通过一篇帖子完成的,但它仍然可以避免。

    htmlspecialchars() 没用。

    通过将所有数据更改方法强制用于post,您可以使攻击者更加困难,并且通过为每个删除操作生成一个令牌,并在删除之前对其进行验证,您可以使攻击者几乎不可能做到这一点。

        3
  •  0
  •   FDisk    17 年前

    我是这样使用的:

    function escape($sql) {
        // Stripslashes
        if (get_magic_quotes_gpc()) {
            $sql = stripslashes($sql);
        }
        //if this is the intedger
        if (!is_int($sql) || $sql == '0') {
            $sql = "'" . mysql_real_escape_string($sql) . "'";
        }
        return $sql;
    }
    

    mysql_query("SELECT SQL_CACHE * FROM `page` WHERE `id` = ".escape($_GET['id'])." LIMIT 1");