sql注入:

 from pymysql import *

 def main():
# 创建连接
conn = connect(host="127.0.0.1", port=3306, database="python_1", user="root", password="mysql", charset="utf8")
# 创建cursor对象
cursor = conn.cursor()
find_name = input("请输入要查询的商品名称:") # ' or 1=1 or '1
# sql = "select * from test;"
sql = """select * from test where name='%s';""" % find_name;
# 打印sql语句
print("------->%s<------" % sql) # select * from test where name='' or 1=1 or '1';
# 执行sql语句
cursor.execute(sql)
for temp in cursor.fetchall():
print(temp) # (1, 'laoli') (2, 'zhangsan') (3, 'laowang')
# 关闭数据库
cursor.close()
conn.close() if __name__ == '__main__':
main()

结果:

请输入要查询的商品名称:' or 1=1 or '1
------->select * from test where name='' or 1=1 or '1';<------
(1, 'laoli')
(2, 'zhangsan')
(3, 'laowang')

  

防sql注入:

 from pymysql import *

 def main():
# 创建连接
conn = connect(host="127.0.0.1", port=3306, database="python_1", user="root", password="root", charset="utf8")
# 创建cursor对象
cursor = conn.cursor()
find_name = input("请输入要查询的商品名称:") # ' or 1=1 or '1
sql = "select * from test where name=%s"
# 打印sql语句
print("------->%s<------" % sql) # select * from test where name=%s;
# 执行sql语句 把find_name放在中括号中传到execute()方法中去
cursor.execute(sql,(find_name,)) # excute(sql语句,元祖) 元祖里放参数
for temp in cursor.fetchall():
print(temp) #
# 关闭数据库
cursor.close()
conn.close() if __name__ == '__main__':
main()

结果:

请输入要查询的商品名称:' or 1=1 or '1
------->select * from test where name=%s<------ 进程已结束,退出代码0

  

sql注入和防sql注入的更多相关文章

  1. 【荐】PDO防 SQL注入攻击 原理分析 以及 使用PDO的注意事项

    我们都知道,只要合理正确使用PDO,可以基本上防止SQL注入的产生,本文主要回答以下几个问题: 为什么要使用PDO而不是mysql_connect? 为何PDO能防注入? 使用PDO防注入的时候应该特 ...

  2. C#语言Winform防SQl注入做用户登录的例子

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  3. PHP防SQL注入不要再用addslashes和mysql_real_escape_string

    PHP防SQL注入不要再用addslashes和mysql_real_escape_string了,有需要的朋友可以参考下. 博主热衷各种互联网技术,常啰嗦,时常伴有强迫症,常更新,觉得文章对你有帮助 ...

  4. mysql之数据库连接的方法封装及防sql注入

    一.定义数据库和表 create database animal; CREATE TABLE `pet` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `name ...

  5. 万能写入sql语句,并且防注入

    通过perpare()方法和检查字段防sql注入. $pdo=new PDO('mysql:host=localhost;dbname=scms', 'root' ); $_POST=array('t ...

  6. nginx服务器防sql注入/溢出攻击/spam及禁User-agents

    本文章给大家介绍一个nginx服务器防sql注入/溢出攻击/spam及禁User-agents实例代码,有需要了解的朋友可进入参考. 在配置文件添加如下字段即可  代码如下 复制代码 server { ...

  7. C#防SQL注入代码的实现方法

    对于网站的安全性,是每个网站开发者和运营者最关心的问题.网站一旦出现漏洞,那势必将造成很大的损失.为了提高网站的安全性,首先网站要防注入,最重要的是服务器的安全设施要做到位. 下面说下网站防注入的几点 ...

  8. php防sql注入、xss

    php自带的几个防止sql注入的函数http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2013/0318/12234.html addslashe ...

  9. Sqlparameter防SQL注入

    一.SQL注入的原因 随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对 ...

随机推荐

  1. 《TCP/IP - TCP/UDP》

    一:概述 - 由于 IP 的传输是无状态的,IP 提供尽力服务,但并不保证数据可以到达主机. - 所以,数据的完整性需要更上层的 传输层来保证.TCP和UDP 均属于 传输层. 二:UDP - 特点 ...

  2. kubernetes1.16 配置 metrics-server

    kubernetes1.16 版本对应最新的metrics-server为v0.3.5. 下载metrics-server配置文件 git clone https://github.com/kuber ...

  3. golang数组

  4. vue页面params传值的必须传name

    a.vue向b.vue传值 a.vue this.$router.push({ path: '/payType', query: { putUpList: this.putUpList, name:' ...

  5. gradle中引用本地项目

    例如在别的地方有一个 apiProject,里面有 apiModule,你想要引用,而不是复制到现有项目,那么 1.现有项目的settings.gradle下 include ':apiModule' ...

  6. IntelliJ IDEA 2019 激活码 | 全产品 | 跨平台 | Goland | PhpStorm | Rider | CentOS | Windows

    >>> 下载地址: https://kenkao.pipipan.com/fs/14896800-375468824 >>> 下载地址2: https://pan. ...

  7. k8s yaml格式的pod定义文件完整内容

    apiVersion: v1 #必选,版本号,例如v1,版本号必须可以用 kubectl api-versions 查询到 . kind: Pod #必选,Pod metadata: #必选,元数据 ...

  8. Java JDK1.8源码学习之路 2 String

    写在最前 String 作为我们最常使用的一个Java类,注意,它是一个引用类型,不是基本类型,并且是一个不可变对象,一旦定义 不再改变 经常会定义一段代码: String temp = " ...

  9. GC偏好

    GC偏好 测序中的GC偏好指的是基因组上GC含量在50%左右的区域更容易被测到,产生的reads更多,这些区域的覆盖度更高, 在高GC或者低GC区域,不容易被测到,产生较少的reads,这些区域的覆盖 ...

  10. easy ui 常用控件配置

    table comboBox 下拉高度 panelHeight:'auto' textBox