mysql htmlspecialchars_htmlSpecialchars和MySQL_REARY_EXECH_String是否保证PHP代码

当涉及到数据库查询时,始终尝试并使用准备好的参数化查询。这个mysqli和PDO图书馆支持这一点。这比使用转义函数(如mysql_real_escape_string.

是,mysql_real_escape_string实际上只是一个字符串转义函数。这不是一颗神奇的子弹。它所要做的就是转义危险字符,以便它们可以安全地在单个查询字符串中使用。但是,如果您不事先清理您的输入,那么您将容易受到某些攻击向量的攻击。

想象一下下面的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注入向量,允许攻击者返回所有行。或1 or is_admin=1 order by id limit 1

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

它允许攻击者在这个完全虚构的示例中返回第一个管理员的详细信息。

虽然这些功能是有用的,但必须谨慎使用。您需要确保所有的web输入都在一定程度上得到验证。在这种情况下,我们发现我们可以被利用,因为我们没有检查我们作为数字使用的变量实际上是数字。在PHP中,您应该广泛地使用一组函数来检查输入是否为整数、浮点数、字母数字等等。但是当涉及到SQL时,请注意准备好的语句的值。如果是准备好的语句,上述代码将是安全的,因为数据库函数应该知道1 OR 1=1不是有效的文字。

至于htmlspecialchars()..那是自己的雷区。

PHP有一个真正的问题,因为它有一个完整的、与html相关的转义函数的选择,并且没有明确的指导说明哪些函数可以做什么。

首先,如果你在一个HTML标签中,你会遇到真正的麻烦。看echo '';

我们已经在HTML标记中了,所以我们不需要来做任何危险的事情。我们的攻击矢量可能是javascript:alert(document.cookie)

现在,生成的HTML看起来像

攻击直接通过。

情况会变得更糟。为什么?因为htmlspecialchars(这样称呼)只编码双引号,而不是单引号。所以如果我们有echo "";

我们邪恶的攻击者现在可以注入新的参数pic.png' οnclick='location.href=xxx' οnmοuseοver='...

给我们

在这种情况下,没有灵丹妙药,你只需要自己对输入进行santise。如果你试着过滤掉坏角色,你肯定会失败的。采取白名单的方法,只让通过的字符是好的。看XSS备忘单关于向量的多样性的例子

即使你用htmlspecialchars($string)在HTML标记之外,您仍然容易受到多字节字符集攻击向量的攻击.

您可以使用的最有效的方法是将mb_COMPATE_CONITY和html实体组合在一起,如下所示。$str = mb_convert_encoding($str, 'UTF-8', 'UTF-8');$str = htmlentities($str, ENT_QUOTES, 'UTF-8');

即使这样,IE6也很脆弱,因为它处理UTF的方式。但是,在IE6的使用率下降之前,您可能会退回到更有限的编码,比如ISO-8859-1。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端跨域问题的几种解决方案

前端跨域问题 一:同源策略   1.whats this     所谓同源是指,域名,协议,端口相同。当浏览器运行一个JS脚本时会进行同源检测,如果不同源是不能执行的。   2.源继承     来自about:blank,javasc…

在OpenShift上部署Java EE微服务

我昨天用WildFly Swarm在博客上发布了有关简单JAX-RS微服务的博客。 您学习了如何使用Maven构建一个所谓的“胖子”,还使用Maven Docker插件对我们的微服务进行了Docker化并在Docker Machine上本地运行。 这是在本地测试事物的好方法。 到目前为止,缺少的…

rocketmq 订阅组_必须先理解的RocketMQ入门手册,才能再次深入解读

推荐阅读一下下2020年后想跳槽?MQ、ZK、Nginx、Kafk等分布式技术你都掌握了?阿里架构师推荐学习的《RabbitMQ实战指南》,渣渣的你都看过吗?RocketMQ入门手册RocketMQ是一个分布式、队列模型的开源消息中间件,前身是Met…

关于返回按钮的事情

在微信的项目涉及到多个不同的项目间跳转那么头部的返回按钮怎么办呢? 在项目之间跳转还有在微信菜单进入页面时我们用了一个中转页进行参数处理和页面跳转判断 目前要用到code,userId等从后端写好的带参数的url到前端获取然后去调用后端的一个校验code和…

.net数据源控件绑定mysql_理解asp.net中DropDownList编辑数据源,绑定数据库数据。...

一、理解asp.net绑定数据库终于学习到了连接数据库部分的内容,杨中科老师视频看起来挺轻松的,如果是高清版就更ok了。我发现我学习新的编程语言会有一个特点,都想要赶紧学习数据库,数据就是一切,有了数据才能操作一切的…

jetty代理jetty_如何在Jetty中使用SPDY

jetty代理jettySPDY是Google提出的一种新协议,是针对网络的新协议。 SPDY与HTTP兼容,但尝试通过压缩,多路复用和优先级降低网页负载。准确地说,快速的目标是:( http://dev.chromium.org/spdy/spdy-whitepap…

五指棋,贪吃蛇,中国银行ATM源码链接

https://i.cnblogs.com/Files.aspx 转载于:https://www.cnblogs.com/weixiaoling/p/6083710.html

mysql select db error_select error:不能用DB-library(如isql)不能用DB-library(如isql

在我们php连接mssql出现select error:不能用DB-library(如isql)或odbc3.7或更早版本将ntext数据或仅使用Unicode排序规则的Unicode数据发送到客户端不能用DB-Library(如 ISQL)或 ODBC 3.7或更早版本将 ntext 数据Warning: mssql_query() [function.mssql- query]: message: 不能…

排序算法之二分治法

MERGE(A,p,q,r) n1 q-p1 n2 r-q let L[1..n_11] and R[1..n_21] be new arraysfor i 1 to n_1   L[i] A[pi-1]for j 1 to n_2   R[j] A[qj] L[n_11] \infty R[n_21] \infty i 1 j 1for k p to r   ifL[i] \leq R[j]     A[k] L[i]     i i1else A[k…

将Java EE与jOOQ结合使用的初学者指南

Java EE附带了自己的持久性API:JPA。 当您想要将RDBMS实体(表/关系)映射到Java实体(类)时,JPA最强大,主要遵循1:1映射策略。 其背后的想法是,业务逻辑通常并不像关系代数…

niva mysql_Nivacat for mysql是一种第三方提供的()_学小易找答案

【单选题】以下不包括在OSI环境中的是【单选题】以下不是直接推动新疆建省原因的选项是( ) (3.0分)【填空题】TOEFL stands for 1____________________________. More than four thousand American universities and other schools require students seeking 2________ to take…

清理SYSAUX表空间

1.查看SYSAUX表空间中数据分布情况 col SEGMENT_NAME for a30 set lines 999 select * from (select segment_name,PARTITION_NAME,segment_type,bytes/1024/1024 from dba_segments where tablespace_nameSYSAUX order by 4 desc) where rownum<10; 2.删除WRH$_LATCH_CHILD…

mysql备份需要停应用吗_对于含有innodb表的实例进行文件拷贝备份时必须停mysql实例吗...

展开全部在实际环境中&#xff0c;62616964757a686964616fe59b9ee7ad9431333361313261时不时需要备份恢复单个或多个表(注意&#xff1a;这里除非明确指定&#xff0c;所说的表一律指InnoDB表)&#xff0c;而对于innodb引擎恢复单个表需要整体的恢复&#xff0c;xtrabackup也可…

Apache Camel 2.16发布–十大亮点

Apache Camel 2.16于上周五发布。 这篇博客文章是我尝试在此新版本中进行前10名&#xff08;加1作为奖励&#xff09;的亮点。 1.动态到 来自骆驼用户的最常见的常见问题是如何将消息发送到端点&#xff0c;uri应该使用消息中的动态值&#xff08;例如标头&#xff09;。 在…

[原创软件]体验组批量加分工具

软件主要功能&#xff1a; 从excel批量导入用户QQ、昵称、年龄信息批量粘贴用户QQ或昵称进行筛选批量添加积分软件界面截图&#xff1a; 开发环境及语言&#xff1a; c#.NET Framework 4.0Visual Studio 2015更新日志&#xff1a; v1.2&#xff08;2016.9.30&#xff09; 增加格…

java8 filter return_java8新特性Java 8 Streams filter示例 - Java教程

在这篇教程中我将向你展示 filter(), collect(), findAny() 和 orElse() 的用法1. Streams filter() 和 collect()1.1 在 Java 8 以前, 像下面这样过滤一个 List:BeforeJava8.javapackage com.mkyong.java8;import java.util.ArrayList;import java.util.Arrays;import java.ut…

java 线性表的表示和实现_线性表中顺序表的的理解和实现(java)

线性表的顺序表示指的是用一组地址连续的存储单元以此存储线性表的数据元素&#xff0c;这种表示也称作线性表的顺序存储结构或顺序映像。通常&#xff0c;称这种存储结构的线性表为顺序表。特点是&#xff1a;逻辑上相邻的数据元素&#xff0c;其物理次序上也是相邻的。顺序表…

akka连接是什么_什么是Akka?

akka连接是什么在深入探讨什么是Akka之前&#xff0c;让我们退后一步来了解并发编程的概念在应用程序开发世界中是如何演变的。 应用程序已从大型的整体程序演变为面向对象的模型。 随着Java EE和Spring框架的出现&#xff0c;应用程序设计演变为更多的基于流程或任务的设计模型…

java socket 判断断网_java socket 判断对方在线或离线、断线

1 在客户端和服务器端做心跳检测(这个后来我放弃了)2 客户端中断连接&#xff0c;服务器会抛出异常&#xff0c;利用这点3这是我为什么不用心跳包的原因&#xff0c;因为不需要了。 有的时候&#xff0c;我们可能网络突然中断了。但是服务器依然会监听那个连接。而且很长都不抛…

java 可重入读写锁 ReentrantReadWriteLock 详解

详见&#xff1a;http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt206 读写锁 ReadWriteLock读写锁维护了一对相关的锁&#xff0c;一个用于只读操作&#xff0c;一个用于写入操作。只要没有writer&#xff0c;读取锁可以由多个reader线程同时保持。写入锁是独占的…