php 安全mysql,关于php:我从mysql注入安全吗?

本问题已经有最佳答案,请猛点这里访问。

这是否足以避免SQL注入?

这里只需要mysql_real_escape_string()方法。在将数据插入数据库之前,不应该执行htmlentities()或urlencode()。这些方法通常是在呈现您提供给用户的视图期间编写的代码。

避免SQL注入的更好方法是使用准备好的语句。

资源:

php.net-用pdo编写语句

关于同一主题:

php:mysql-real-escape-string是否足以清除用户输入?

+准备好的报表。在正确的情况下,它们也可以帮助提高性能。

+准备好的报表1份

<3个准备好的声明:)

我认为您混淆了两个安全问题:SQL注入和跨站点脚本(XSS)。

如果在发送到SQL数据库的SQL查询中使用了未正确清理的用户输入,则网站容易受到SQL注入的攻击。例如,此代码引入了一个SQL注入漏洞:

mysql_query("INSERT INTO postmessages (postmessage) VALUES ('" . $_POST['postmessage'] ."')");

这个问题很容易通过使用像mysql_real_escape_string这样的函数来转义用户输入来解决:

mysql_query("INSERT INTO postmessages (postmessage) VALUES ('" . mysql_real_escape_string($_POST['postmessage']) ."')");

这就是您需要做的全部工作,但最棘手的部分是记住要为SQL语句中使用的每一个用户输入完成这项工作。

当用户输入在发送到客户机的HTML中使用时,网站容易受到跨站点脚本攻击。例如,此代码引入了一个XSS漏洞:

echo"" . $_POST['postmessage'] ."";

通过使用类似于htmlspecialchars的函数来转义用户输入,可以修复XSS漏洞:

echo"" . htmlspecialchars($_POST['postmessage']) ."";

同样,这很容易做到,但很容易被遗忘。

通常,将用户输入放在数据库中以便在以后发送HTML时使用的输入保存为未修改的。也就是说,只使用mysql_real_escape_string。但是,您可以转义用户输入以防止XSS,然后转义XSS安全字符串以防止SQL注入:

mysql_query("INSERT INTO postmessages (postmessage) VALUES ('" . mysql_real_escape_string(htmlspecialchars($_POST['postmessage'])) ."')");

好处是,在将值写入HTML之前,不需要记住使用htmlspecialchars从数据库中转义值。缺点是一些值可能需要使用不同的函数进行转义。例如,用户名可能与htmlspecialchars一起转义,但"postmessage"可能允许bbcode、markdown或html的子集。如果您对所有输入进行转义以防止XSS,那么您将需要使用htmlspecialchars_decode等工具从数据库中取消对值的scape。

一个问题是,取消转义字符串的转义并不总是返回原始字符串(unescape(escape($orig))不一定与$orig相同)。即使使用htmlspecialchars和htmlspecialchars_decode,使用不同的引号样式也会导致此问题。另一个例子是,如果使用了strip_tags,那么信息将无法恢复地被删除;您将无法撤消strip_tags。因此,许多开发人员选择使用mysql_real_escape_string只将值保存到数据库中,而htmlspecialchars则从数据库中准备一个字符串以用于HTML。

使用准备好的语句,更清晰地查看,并且一旦掌握了它的窍门,可能更容易处理,这不是更好吗?

@施乐:当然。准备好的语句使一致地转义用户输入更加容易。然而,在回答OP的问题时,我想确保他/她理解使用mysql_real_escape_string或某些db转义机制和htmlentities或某些xss转义机制的原因。

是的,但不使用mysql_real_escape_string()是有原因的。首先,打字很痛苦。其次,你必须记住每次都要使用它。第三,它会使代码变得丑陋。第四,你必须记住引用你的字符串。第五,以这种方式在数据库中插入blob更困难。

从长远来看,学习PDO将使你的生活变得更好。学习起来比简单使用mysql_real_escape_string()更困难,但是长期的好处超过了学习曲线带来的不便。

您还应该确保在插入代码的地方使用"around"。

例如,如果你这样做

$_POST['userid'] = mysql_real_escape_string($_POST['userid']);

mysql_query('SELECT * FROM user WHERE userid = '. $_POST['userid']);

mysql-real-escape-string没有任何帮助。这是因为"$u post['userid']没有被包围"。

所以你应该这么做

$_POST['userid'] = mysql_real_escape_string($_POST['userid']);

mysql_query('SELET * FROM user WHERE userid = \''. $_POST['userid'] .'\'');

相反。

所以在变量上使用mysql-real-escape-string并不意味着它们在任何查询中都是安全的。

另一种方法是使用准备好的语句。

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

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

相关文章

excel单元格斜线_怎么在excel中画斜线?怎么在excel表格中画斜线?

在excel表格中画斜线的技巧教程&#xff1a;1.在Excel中打开一个空白工作簿。 2.您可以在任何大小的单元格中执行此操作&#xff0c;但是如果先将其增大则更容易理解。为此&#xff0c;我们只需单击并按住第1行和第2行之间的线&#xff0c;然后将其拖动到所需的高度即可。然后对…

php报表数据打印机,通过打印机打印带打印功能的php表

我有以下php表,我如何只在php表中添加打印功能&#xff1f;点击一个按钮,下面的表格通过打印机打印,我试过’CTRL P’,我只得到页面的html部分示例页眉,页脚,导航栏,而不是结果php结果echo "FILEIDFirstnameLastnameIssue DateInterest RateTermsBalance OutstandingBalan…

xbox one s驱动_理想照进现实 理想ONE开始接受预定

2016年4月22日&#xff0c;车和家创始人&CEO李想在源码资本第二届码会年会首谈车和家&#xff0c;改造城市出行。车和家 创始人&CEO 李 想2016年码会年会演讲2019年4月10日&#xff0c;增程式智能电动车「理想ONE」正式公布售价并开始接受预订&#xff0c;并将于2019年…

two+few+arguments+php,PHP5.5 ~ PHP7.2 新特性整理

PHP5.5 ~ PHP7.2 新特性整理一、从PHP 5.5.x 移植到 PHP 5.6.x使用表达式定义常量在之前的 PHP 版本中&#xff0c; 必须使用静态值来定义常量&#xff0c;声明属性以及指定函数参数默认值。 现在你可以使用包括数值、字符串字面量以及其他常量在内的数值表达式来 定义常量、声…

date设置时间_解决 IDEA 无法找到 java.util.Date 的问题

原文首发于 https://studyidea.cn/问题最近在项目中频繁使用到 java.util.Date&#xff0c;但是使用 IDEA 提示查找 Date 类&#xff0c;却无法找到 java.util.Date。可以看到&#xff0c;智能提示的结果没有 java.util.Date。没办法&#xff0c;只能暂时手动导入该包。最近闲下…

mysql插入语句例句,一句简单的MySql插入语句怎么写 ?

守候你守候我insert into 表名 values(default,"名字","2011-04-15 12:22:25"); //default可以换成null------------------------------insert into 表名 (name,datetime) values("名字","2011-04-15 12:22:25");使用SQL语法大写&…

vue key重复_【第2112期】 import { reactive } from #39;vue#39;

前言今日早读文章由Anthony Fu授权分享。Anthony Fu&#xff0c;是 Vue 的 Core Team 的一员&#xff0c;在 Vue主要负责 vue/composition-api 这个项目的维护。这是一个面向 Vue 2 的插件&#xff0c;它在 Vue 2 中增加了 Vue 3 的 Composition API 的支持。最近也加入了 Vite…

matlab系统稳定性分析,控制系统稳定性分析的MATLAB实现

收稿日期 :200706220 基金项目 :周口师范学院青年基金资助项目(No. ZKNUQN200621) 作者简介 :刘  伟(1976 - ) ,女 ,河南太康人 ,助教 ,硕士 ,主要从事电力系统及其自动化仿真研究. 第 25 卷 第 2 期 周口师范学院学报 2008 年 3 月 Vol. 25 No. 2 Journal of Zhoukou Normal …

路由器下一跳地址怎么判断_网络基本功三:细说路由器

介绍以太网交换机工作在第二层即数据链路层&#xff0c;用于在同一网络内部转发以太网帧。但是&#xff0c;当源和目的IP地址位于不同网络时&#xff0c;以太网帧必须发送给路由器。路由器负责在不同网络间传输报文&#xff0c;通过路由表来决定最佳转发路径。当主机将报文发送…

HTML多选mysql,html多选下拉框 | 学步园

一个jquery ui,实现html的多选下拉框&#xff0c;在下拉里面加checkbox&#xff0c;不改变页面的提交特性&#xff0c;只是动态的改变select选中的多选数据。jsp页面例子&#xff1a;pageEncoding"UTF-8" import"java.util.*,java.text.*"%>String path…

利用逆矩阵解线性方程组_经典Jacobi方法用于求解矩阵特征值

1、引言求解线性方程组在许多领域中都有重要应用&#xff0c;写成矩阵的形式&#xff1a; 。求解 可以写成&#xff1a; &#xff0c;这里需要求解矩阵 的逆。《线性代数》中给出的方法主要有两类&#xff1a;1、设置增广矩阵&#xff0c;利用高斯消元法&#xff0c;通过初等行…

filename: core/loader.php,使用第三方包后出现的这个错误,你们都遇到过吗?

使用了一些第三方包&#xff0c;经常会发现&#xff0c;引入某些第三方包后(比如在laravel5.6中引入viacreative/sudo-su)&#xff0c;使用命令行工具会遇到这样的错误提示&#xff0c;卸载了第三方包后重新安装vendor目录问题立马解决。真是把人头发都愁白了&#xff1a;PHP F…

python函数的作用域_python学习第五篇 函数 变量作用域

原博文 2019-07-18 23:40 − 函数 函数是组合好的&#xff0c;可以重复使用的&#xff0c;用来实现单一或相关联功能的代码片段作用 能提高应用的模块性和代码的重复利用率函数的创建 第一函数的规则 1.函数代码块一def关键字开头&#xff0c;后接函数标识符名称和圆括号‘&…

js post中文乱码 php,AJAX之POST数据中文乱码如何解决

本文主要和大家分享AJAX之POST数据中文乱码如何解决&#xff0c;前端使用encodeURI进行编码&#xff0c;希望能帮助到大家。var param encodeURI(param);$.ajax({url: url,methodtype: "POST",async: false,timeout: 60000,contentType: "application/json&quo…

python递归 数字全排列_利用递归实现全排列(python)

利用递归实现全排列(python) """ 利用递归实现全排列 第一个位置可能有n种可能&#xff0c;第二个位置可能 有n-1种可能...... 代码思路就是第一个位置可以和n个元素交换&#xff0c; 第二个元素可以和n-1个元素进行交换&#xff0c;到最 后一个输出这次排列&am…

python pip使用_Python——pip的安装与使用

pip 是 Python 包管理工具&#xff0c;该工具提供了对Python 包的查找、下载、安装、卸载的功能。目前如果你在 python.org 下载最新版本的安装包&#xff0c;则是已经自带了该工具。Python 2.7.9 或 Python 3.4 以上版本都自带 pip 工具。pip 官网&#xff1a;https://pypi.o…

php文章列表样式,PHPCMS V9 文章列表循环样式自定义方法

在此&#xff0c;再次分享Whidy的文章"phpcms文章列表循环不同样式制作方法"&#xff0c;下面CMSYOU来与大家具体分享&#xff0c;原地址为http://whidy.net/phpcms-list-with-different-style.html&#xff0c;在这里感谢。大家在用PHPCMS系统做网站的时候,有时候在…

角速度求积分能得到欧拉角吗_一个有趣的反常积分问题

今天物理考试&#xff0c;老师提到了一个有趣的积分问题。听说是拉普拉斯变换的一个应用之一&#xff08;生成函数&#xff1f;&#xff09;&#xff0c;但是我没听过那个东西所以硬上了&#xff1a;D1&#xff09;试求积分 2) 试说明积分 的收敛性1&#xff09;对于第一问可以…

php计算1-100奇数的和,学习脚本1:计算100以内奇数和和偶数和 (笔记)

let I$[$I1]let I1let I 注意此处只有是原先数值加1才可用此方法上述三者运算是相同的- 减等 两边的变量前边的减去后边的变量之后把值再放到原来的变量上 加等 两的的变量前边的加上后边的变量之后把值再放到原来的变量上* 乘等 两边的变量前边的乘上后边的变量之后把值再放到…

查看ie保存的表单_解决浏览器保存密码自动填充问题

解决浏览器保存密码自动填充问题问题描述话说有一天&#xff0c;我如往常一样打开我的开发网站进行登录操作。浏览器很平常的在我们进行登录操作之后询问我是否需要记住密码&#xff0c;懒惰如我点击了记住密码。一切都很正常的进行着&#xff0c;没有什么异常发生。然而&#…