php mysql 过滤

admin3个月前软件教程36

PHP和MySQL的结合,让网站开发越来越便利。但是,我们也要注意在网站开发中,如何避免SQL注入攻击。

SQL注入就是通过思路和计算,往随意输入框输入SQL语句,后台数据库通过SQL语句的运行,就达到了攻击目的,导致数据泄露、遭受伤害的情况。所以,开发者需要认真对待输入框过滤,防止这种情况的发生。

接下来,我们将介绍如何使用PHP和MySQL对数据进行过滤,以避免SQL注入攻击。

1.使用mysql_real_escape_string函数

mysql_real_escape_string是一个可以使用的函数,可以快速的对数据进行了过滤。

<?php$mysqli = new mysqli("localhost", "user", "password", "db");$username = $_POST['username'];$password = $_POST['password'];$username = $mysqli->real_escape_string($username);$password = $mysqli->real_escape_string($password);$sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";$res = $mysqli->query($sql);while ($row = $res->fetch_assoc()) {echo $row['username'] . '<br />';}?>

上面的代码使用mysql_real_escape_string函数,将用户名和密码过滤,确保它们是可以在查询中使用的数据。

2.使用prepared语句

使用prepared语句来预编译查询,可以避免SQL注入攻击。prepared语句需要使用参数绑定操作,这样可以在不将可能会破坏查询的任何含有特殊字符的数据中定义其中的内容。

<?php$mysqli = new mysqli("localhost", "user", "password", "db");$username = $_POST['username'];$password = $_POST['password'];$stmt = $mysqli->prepare("SELECT * FROM users WHERE username=? AND password=?");$stmt->bind_param('ss', $username, $password);$stmt->execute();while ($row = $stmt->fetch()) {echo $row['username'] . '<br />';}?>

在上述示例中,我们使用了prepare函数来创建一个新的查询,然后使用bind_param函数来指定每个查询的参数。最后,执行查询并使用fetch函数在结果集中循环遍历输出结果。

3.使用filter_input函数

使用filter_input函数过滤输入数据,将可以防止用户输入不受支持的数据。这种方法可以为整个应用程序提供一种更加统一的数据管理方式。

<?php$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);$password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);$mysqli = new mysqli("localhost", "user", "password", "db");$stmt = $mysqli->prepare("SELECT * FROM users WHERE username=? AND password=?");$stmt->bind_param('ss', $username, $password);$stmt->execute();while ($row = $res->fetch_assoc()) {echo $row['username'] . '<br />';}?>

上述代码中,我们使用filter_input函数,对输入数据进行过滤。然后使用prepare函数、bind_param函数和execute函数对数据进行查询。

总的来说,使用PHP和MySQL对数据进行过滤,是使我们避免SQL注入攻击的一种有效方式。开发者只需要根据需要选择合适的过滤方法即可。

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

腾讯会议投屏视频没声音

腾讯会议投屏视频没声音可能是因为没有打开麦克风或是没有打开手机音量。腾讯会议是腾讯云旗下的一款音视频会议产品,于2019年12月底上线。具有300人在线会议、全平台一键接入、音视频智能降噪、美颜、背景...

浅析共享健身房APP的价值所在

“近吃多了,身材长胖了,我去报名健身房把身材减回去吧”“好久没运动了,近得去健身房练练了”这些都是人们去健身房的原因,而互联网时代多样化的需求传统的健身行业怎么说也得跟随互联网脚步才行,于是在共享浪潮...

10107888怎么转人工服务

大家好,我是80知识网,上述问题将由我为大家进行解答。10107888是美团网全国统一客服热线,在拨通之后根据语音提示依次按8-2-0转接人工服务,需要耐心听完语音播报,美团人工客服是24小时在线的。...

oracle 1064

今天,我们要说的是Oracle 1064错误。如果你使用过Oracle数据库,那么你一定能够深刻体会到这个错误的恐怖。它会打断你的工作进程,耽误你的开发进度,给你带来巨大的困扰。在本文中,我们将详细探...

vivo手机钉钉为什么没有提示音

vivo手机钉钉没有提示音的原因是:1、可能是不小心将钉钉的提示音关闭了。2、可能是vivo手机处于静音或振动状态。3、可能是手机通知音量太小,将通知音量调大即可。钉钉(DingTalk)是中国领先的...

芒果tv弹幕按钮时有时无

芒果tv弹幕按钮时有时无是因为芒果tv为了保护良好的视听环境而限制了弹幕功能。只有特定的节目才会支持弹幕功能,而非直播节目则是直接没有弹幕的。另外,PC端的芒果tv也是没有弹幕功能的。因此这也就是在收...