sql注入攻击实例mysql_MySQL 处理SQL注入攻击

MySQL  处理SQL注入攻击

如果您通过网页获取用户输入并将其插入到一个MySQL数据库中,则有可能让您对称为SQL注入的安全问题敞开大门。本课将教您如何帮助防止这种情况发生,并帮助您保护脚本和MySQL语句。

比如当你要求用户输入他们的名字,这时候他们给你的不是名字而是一个MySQL语句,那么你可能会在不知不觉中运行这条SQL语句。

永远不要相信用户提供的数据,只在验证后处理此数据.通常,这是通过模式匹配来完成的。在下面的示例中,用户名限制为字母数字混合个字符,加上下划线和长度为8到20个字符—根据需要修改这些规则。if (preg_match("/^\w{8,20}$/", $_GET['username'], $matches))

{

$result = mysql_query("SELECT * FROM users

WHERE username=$matches[0]");

}

else

{

echo "username not accepted";

}

为了演示问题,请考虑以下输入:// supposed input

$name = "Qadir'; DELETE FROM users;";

mysql_query("SELECT * FROM users WHERE name='{$name}'");

函数调用应该从users表中检索记录,其中名称列与用户指定的名称匹配。在正常情况下, $name只包含字母数字字符和空格,例如字符串 ilia。但是在这里,通过将一个全新的查询附加到$name,对数据库的调用变成了灾难:注入的删除查询从用户删除所有记录。

幸运的是,如果使用MySQL ,mysql_query() 函数不允许在单个函数调用中查询堆栈或执行多个查询。如果尝试堆栈查询,则调用失败。

但是,其他PHP数据库扩展,例如SQLite和PostgreSQL,则会愉快地执行堆叠查询,执行一个字符串中提供的所有查询,并产生严重的安全问题。

防止SQL注入:

您可以使用perl和PHP等脚本语言巧妙地处理所有转义字符。PHP的MySQL扩展提供了函数mysql_real_escape_string()以转义对MySQL有特殊意义的字符。if (get_magic_quotes_gpc())

{

$name = stripslashes($name);

}

$name = mysql_real_escape_string($name);

mysql_query("SELECT * FROM users WHERE name='{$name}'");

Like语句中的注入

like查询时,如果用户输入的值有"_"和"%",则会出现这种情况:用户本来只是想查询"abcd_",查询结果中却有"abcd_"、"abcde"、"abcdf"等等;用户要查询"30%"(注:百分之三十)时也会出现问题。

在PHP脚本中我们可以使用addcslashes()函数来处理以上情况,如下实例:$sub = addcslashes(mysqli_real_escape_string($conn, "%something_"), "%_");

// $sub == \%something\_

mysqli_query($conn, "SELECT * FROM messages WHERE subject LIKE '{$sub}%'");

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

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

相关文章

生命的帐单

深夜,危重病人房里,癌症患者迎来了了他生命中最后一分钟,死神如期来到他的身边。 隔着氧气罩,他含糊不清地对死神说:“再给我一分钟,就一分钟,好吗?” 死神问:“你…

C++const的多种用法

0. 写在最前面 在看《effective C》前觉得代码都是自己写的,加不加这些const修饰,注不注意格式都无所谓啦,反正自己知道。看完后印象比较深的两点,一个是你设计的类有可能会给别人用,你这些良好的习惯可以防止别人在用…

[vue] vue为什么要求组件模板只能有一个根元素?

[vue] vue为什么要求组件模板只能有一个根元素? ‘为什么只能有且只有一个根元素’于是我花了二十多分钟去找了一下答案......竟然没有找到答案....好的现在我来说说我的理解,如果有不对的地方欢迎指出。我觉得这个问题需要从两个方面来说起&#xff1a…

java面试技术问题_11个JAVA面试中常见技术问题

原标题:11个JAVA面试中常见技术问题大家在平常面试java的过程中都会遇到哪些难题呢?还有一些即将去面试java的童鞋们,你们想知道技术面试中会涉及到哪些点吗?达妹为你整理Java面试中会被问到的几个技术难题。1、一个".java&q…

终于用到DataGrid了,比较郁闷

我用的是windows窗体的DataGrid控件在显示时间的时候,不显示具体的小时/分钟/秒上网查资料,介绍的都是web下的DataGrid如何现实,form下的不能用这些办法谁能帮帮我谢谢~~转载于:https://www.cnblogs.com/foreverpk/archive/2006/03/16/351759…

[vue] EventBus注册在全局上时,路由切换时会重复触发事件,如何解决呢?

[vue] EventBus注册在全局上时,路由切换时会重复触发事件,如何解决呢? 建议在created里注册,在beforeDestory移出个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家…

Java list接口

list中的元素可以重复,父接口是collection,实现类是:arraylist和vector。 arraylist: package com.jike.list;import java.util.ArrayList; import java.util.List;public class ListDemo01 {public static void main(String[] ar…

java treemap api_Java 8 Stream API toMap转换为TreeMap

public class Message {private int id;private User sender;private User receiver;private String text;private Date senddate;..}我有List list new ArrayList<>();我需要将它们转换为TreeMap> map我知道如何使用转换为HashMaplist.stream().collect(Collectors.g…

苏州游记

已经很久没有更新这里了&#xff0c;懒哦&#xff01;上周末一干人等去了苏州的三山岛&#xff0c;很是开心&#xff0c;春天来了&#xff0c;到处都是那么的生机盎然&#xff01;三山岛是太湖上若干岛屿之一&#xff0c;离苏州城很远&#xff0c;我们乘了50分钟的火车后&#…

java 图片合成 红色失真_Java - 处理某些图片泛红

参考博文&#xff1a;http://blog.csdn.net/kobejayandy/article/details/44346809http://blog.csdn.net/shixing_11/article/details/6897871http://blog.csdn.net/cuihailiang/article/details/52037389问题现象&#xff1a;Java上传图片时&#xff0c;对某些图片进行缩放、裁…

markdown 转义字符

\\ 反斜杠   \ 反引号   \* 星号   \_ 下划线   \{\} 大括号   \[\] 中括号   \(\) 小括号   \# 井号   \ 加号   \- 减号   \. 英文句号   \! 感叹号 转载于:https://www.cnblogs.com/willingtolove/p/10456027.html

[vue] 怎么修改vue打包后生成文件路径?

[vue] 怎么修改vue打包后生成文件路径&#xff1f; webpack&#xff1a;output.path vue-cli3: outputDir个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

[ERROR]在删除BizTalk主机之前必须删除其所有实例?

在删除时报错如下&#xff1a;------------------------------------无法从 MessageBox 数据库服务器“BLADE14”&#xff0f;数据库名称“BizTalkMsgBoxDb”删除与 BizTalk 主机“OrchestrateServiceDeskEventHost”关联的数据库对象。在删除 BizTalk 主机之前必须删除其所有实…

[vue] 说说你对vue的mixin的理解,有什么应用场景?

[vue] 说说你对vue的mixin的理解&#xff0c;有什么应用场景&#xff1f; mixins 就是混入。一个混入对象可以包含任意组件选项。同一个生命周期&#xff0c;混入对象会比组件的先执行。//暴露两个mixins对象 export const mixinsTest1 {methods: {hello1() {console.log(&qu…

cadence 旋转快捷键_cadence原理图快捷键

原标题&#xff1a;cadence原理图快捷键Allegro Design Entry CIS 原理图1.shift鼠标滚轮 左右移动2.Ctrl鼠标滚轮 放大缩小3.Alt鼠标滚轮 上下移动4.按下鼠标滚轮可任意方向拖动图纸(可以一直保持按下状态或者按一下松开)5.CTRL鼠标左键 &#xff1a; 元件叠选6.CTRL鼠标左键拖…

Lab 11-1

Analyze the malware found in Lab11-01.exe. Questions and Short Answers What does the malware drop to disk? A: The malware extracts and drops the file msgina32.dll onto disk from a resource section named TGAD.How does the malware achieve persistence? A: T…

复制服务器的配置

设置SQL Server复制服务器时&#xff0c;必须执行几项任务来确保复制会按计划运作。以下是必须完成的工作列表&#xff1a;1。确保在分发服务器上有足够的内存空间。2。确保分发服务器上的工作目录对于分发服务器是可见的。缺省的工作目录\MSSQL\REPLDATA&#xff0c;这个目录存…

[vue] watch怎么深度监听对象变化

[vue] watch怎么深度监听对象变化 deep设置为true 就可以监听到对象的变化let vmnew Vue({el:"#first",data:{msg:{name:北京}},watch:{msg:{handler (newMsg,oldMsg){console.log(newMsg);},immediate:true,deep:true}}})个人简介 我是歌谣&#xff0c;欢迎和大家一…

head first java原文_Head First Java

条件语句&和|可以用作条件语句&#xff0c;但是是长连接&#xff0c;左右两边的表达式必须都执行完&#xff01;这和&&和||不同&#xff0c;&&和||是短连接&#xff0c;只要左边的表达式已经能够计算出整个表达式的结果&#xff0c;右边的表达式就不会执行…

C#操作XML

已知有一个XML文件&#xff08;bookstore.xml&#xff09;如下&#xff1a; <?xml version"1.0"encoding"gb2312"?><bookstore><book genre"fantasy"ISBN"2-3631-4"><title>Oberons Legacy</title> &…