Is mysqli_real_escape_string safe?(mysqli_real_escape_string 安全吗?)
问题描述
我是 PHP 新手,我意识到我的数据库连接,使用 php 表单(带有用户和传递文本输入)是完全不安全的:
I´m new in PHP and I´ve realised that my database connection, using a php form (with user and pass text inputs) was totally unsafe:
这是有效的,但不安全:
This was working, but was unsafe:
<?php
$link=mysqli_connect('localhost','xx','xx','xx');
$sql=' SELECT * FROM usuarios
WHERE username="'.$_POST['usuario'].'"
AND pass="'.$_POST['usuario'].'"
';
$rs=mysqli_query($link,$sql);
mysqli_close($link);
?>
所以,我已经阅读了 mysqli_real_escape_string,并决定尝试一下:
So, I´ve read about mysqli_real_escape_string, and decided to try it out:
<?php
$link=mysqli_connect('localhost','xx','xx','xx');
$usuario=mysqli_real_escape_string($link, $_POST["usuario"]);
$clave=mysqli_real_escape_string($link, $_POST["clave"]);
$sql=' SELECT * FROM usuarios
WHERE username="'.$usuario.'"
AND pass="'.$clave.'"
';
$rs=mysqli_query($link,$sql);
mysqli_close($link);
?>
这是正确的吗?这是如何使用 mysqli_real_escape_string 的好例子吗?
Is this correct? Is this a good example of how to use mysqli_real_escape_string?
推荐答案
这是正确的吗?
是的.
这是如何使用 mysqli_real_escape_string 的好例子吗?
Is this a good example of how to use mysqli_real_escape_string?
否
如果曾经使用过,这个函数必须被封装到一些内部处理中,并且永远不必从应用程序代码中直接调用.必须使用占位符来表示查询中的数据:
$sql='SELECT * FROM usuarios WHERE username=? AND pass=?';
然后,在处理占位符标记时,此功能可以被应用(如果适用)但不是单独应用,而是沿着所有格式规则应用.
And then, upon processing placeholder marks, this function may be applied (if applicable) but not by itself but along ALL the formatting rules.
这篇关于mysqli_real_escape_string 安全吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:mysqli_real_escape_string 安全吗?


基础教程推荐
- Libpuzzle 索引数百万张图片? 2022-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- 在多维数组中查找最大值 2021-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01