博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转] Htmlspecialchars 和 mysql_real_escape_stringPHP 代码注射安全
阅读量:6116 次
发布时间:2019-06-21

本文共 1090 字,大约阅读时间需要 3 分钟。

转载自: 

1. 数据库的查询时,总是尝试,并使用准备的 parameterised 的查询。mysqli 和 PDO 库支持这。这是比使用逃逸的功能,如 mysql_real_escape_string 无限的安全。

是的 mysql_real_escape_string 实际上是只是逃避函数的字符串。它不是灵丹妙药。它将所做的一切是危险的转义字符,以便它们可以安全地使用单个查询字符串中。但是,如果你不做事先 sanitise 您的输入,然后您将容易受到一定的攻击媒介。

想象一下以下的 SQL:

$result ="SELECT fields FROM table WHERE id = ".mysql_real_escape_string($_POST['id']);

您应该能够看到这就是容易受到攻击。

想象一下 id 参数包含常见的攻击:

1 OR 1=1

没有危险的字符,在那里进行编码,所以它将直接通过逃逸的筛选器。离开我们:

SELECT fields FROM table WHERE id=1 OR 1=1

这是一个可爱的 SQL 注入向量和将使攻击者能够返回的所有行。或

1or is_admin=1 order by id limit 1

这会产生

SELECT fields FROM table WHERE id=1or is_admin=1 order by id limit 1

这使得攻击者能够在此完全虚构的示例返回第一个管理员的详细信息。

虽然这些函数是有用的他们必须小心使用。您需要确保所有 web 输入进行都验证,在某种程度上。在这种情况下,我们看到我们可以利用因为我们没有检查变量,我们正在使用的数字,是实际数字。在 PHP 中广泛应使用一组函数检查输入整数、 浮点数、 字母数字等。但是,SQL 时,听取预准备语句的最大价值。上面的代码是不安全的如果它是预准备的语句的数据库功能便会知道, 1 OR 1=1 不是有效的文本。

避免注入的方法:

 

2. 至于 htmlspecialchars()。这就是它自己的雷场。

有一个真正的问题在 PHP 中有一个整体的不同的 html 相关逃逸功能,并没有明确的指导,究竟哪些功能做什么选择。

首先,如果您是 HTML 标记内,你是在真正的麻烦。看

echo '';

我们已经内部 HTML 标记,所以我们不需要 < 或大于做任何危险的事情。我们的攻击可能只是javascript:alert(document.cookie)

现在生成 HTML 看起来就像

 
备注: html源码是:
你可能感兴趣的文章
云平台编程与开发(二):X5Cloud云平台SDK包概述
查看>>
Android图片失真问题
查看>>
我的友情链接
查看>>
通过路由配置提高Wi-Fi速度和距离
查看>>
使用Gradle构建Java项目
查看>>
Leetcode PHP题解--D26 766. Toeplitz Matrix
查看>>
爬虫简单入门-接口寻找调用
查看>>
mysql常用语句
查看>>
程序员随想-关于优雅
查看>>
爱加密联合应用之星(APPSTAR)为开发者提供免费云加密服务
查看>>
部署基于Centos7的Zimbra邮件系统-之一系统规划及DNS服务配置
查看>>
如何理解比特币的底层协议
查看>>
cocos集成科大讯飞语音识别
查看>>
The Reactive Manifesto(响应式宣言)
查看>>
R语言笔记 attach()、detach()和with()
查看>>
ftp操作
查看>>
服务器双网卡双网关
查看>>
mysql入门之三:索引添加删除
查看>>
adb shell 命令详解
查看>>
dom4j解析带命名空间的xml文件
查看>>