首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >保护在方法调用、SQL和文件调用中使用的用户数据

保护在方法调用、SQL和文件调用中使用的用户数据
EN

Stack Overflow用户
提问于 2009-09-25 04:49:37
回答 3查看 89关注 0票数 0

我在方法调用、SQL查询和文件调用中使用$_GET$_POST$_COOKIE变量--为了更好的安全性(避免注入攻击等),有必要转义/重写该用户数据。你怎么推荐这件事?

从内置的逃逸功能.为了让果汁流动:

  • 将反斜杠添加到:\x00, \n, \r, \, ', "\x1a中,以确保字符串对SQL查询的安全性--如mysql_real_escape_string()所示。
  • 将接受的字符数限制为[a-zA-Z0-9 _-\.] (其中"\.“是转义的”.-dot“)。

非常感谢您的投入。谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-25 04:58:08

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

例如:

  • 对于MySQL查询,使用mysql_real_escape_stringmysqli_real_escape_stringPDO::quote
    • 或者使用准备好的语句(米斯里PDO)
    • 不要自己加反斜杠:当正确和良好的工作(和良好的测试)时为什么要这样做!转义函数已经存在了?

  • 对于HTML,请使用htmlspecialcharshtmlentities实体

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

有许多类型的输出已经存在的转义函数/方法:使用这些函数/方法!

票数 1
EN

Stack Overflow用户

发布于 2009-09-25 05:56:00

还请注意,您必须转义的东西(如果用户输入)是图像位置等。

如果某个人热链接到图像(例如,化身),则如下所示

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

然后您的视图中的代码是

代码语言:javascript
运行
复制
<img class="avatar" alt="<?php echo $userName; ?>" src="<?php $avatarUrl; ?>" />

如果您以管理员身份登录,那么您可能会意外地删除用户。当然,希望这种删除可以通过post来完成,但仍然可以避免。

在这种情况下,htmlspecialchars()帮不上忙。

通过强制使用post的所有数据更改方法,攻击者可能会变得更加困难;通过为每个delete操作生成一个令牌,并在删除之前对其进行验证,几乎是不可能的。

票数 0
EN

Stack Overflow用户

发布于 2009-09-25 08:17:45

我就是这样用的:

代码语言:javascript
运行
复制
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查询中

代码语言:javascript
运行
复制
mysql_query("SELECT SQL_CACHE * FROM `page` WHERE `id` = ".escape($_GET['id'])." LIMIT 1");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1475489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档