sql注入

005-OSI参考模型和网络安全

我的梦境 提交于 2020-02-07 22:00:49
测试网络通不通可以用ping 1.物理层安全 2.数据链路层安全 ADSL账号密码 无线账号密码 VLAN虚拟局域网 交换机端口绑定MAC地址 3.网络层安全 在路由器上使用ACL控制数据包流量 防火墙 4.应用层安全 开发的应用程序没漏洞 sql注入漏洞等洞 来源: https://www.cnblogs.com/qq840066421/p/12274508.html

您的Spring框架注释指南,请注意查收

让人想犯罪 __ 提交于 2020-02-07 17:37:50
这是关于几乎所有Spring Framework注释的简化,包括Core,Spring Cloud,Spring MVC,Spring REST和Spring Boot。 在本文中,我们将介绍Spring框架中可用的注释。 核心Spring框架注释 @Required 此注释适用于bean setter方法。考虑一个需要强制执行必需属性的方案。该 @Required 注释表明,受影响的bean必须在配置时所要求的属性来填充。否则,将BeanInitializationException 引发类型 异常。 @Autowired 此注释适用于字段,setter方法和构造函数。该 @Autowired 注释对象内喷射隐含的依赖。 当您@Autowired 在字段上使用并使用属性名称传递字段的值时,Spring会自动为字段分配传递的值。 您甚至可以@Autowired 在私有属性上使用 ,如下所示。(但是,这是非常糟糕的做法!) public class Customer { @Autowired private Person person; private int type; } 当您@Autowired 在setter方法上使用 时,Spring会尝试通过对该方法进行类型自动装配来执行它。您正在指示Spring应该使用setter方法来初始化此属性,您可以在其中添加您的自定义代码

网络爬虫+SQL注入检测二

萝らか妹 提交于 2020-02-07 07:53:16
4.2 爬虫的编写 爬虫的思路我们上面已经讲过了,先完成url的管理,我们单独将他作为一个类 文件保存在lib/core/UrlManager.py。 #!/usr/bin/env python #-*- coding:utf-8 -*- class UrlManager(object): def __init__(self): self.new_urls = set() self.old_urls = set() def add_new_url(self, url): if url is None: return if url not in self.new_urls and url not in self.old_urls: self.new_urls.add(url) def add_new_urls(self, urls): if urls is None or len(urls) == 0: return for url in urls: self.add_new_url(url) def has_new_url(self): return len(self.new_urls) != 0 def get_new_url(self): new_url = self.new_urls.pop() self.old_urls.add(new_url) return new

MySQL学习笔记——〇四

妖精的绣舞 提交于 2020-02-06 01:15:42
今天我们继续对MySQL内容进行一些补充,但是今天所讲的内容已经不是平时常用的了。 先穿插一条指令贯穿了今天所讲的所有知识点: MySQL结束符 结束符delimiter其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。 但是在今天的知识点中我们经常需要用到begin...end这种结构体,那么在结构体中的sql语句后的分号就不能作为结束符了,我们需要随便设置一个结束符,在结构体结束后再换回分号。 MySQL视图(View) 如果我们在日常进行数据库维护过程中需要一个重复的虚拟表,这个虚拟表的构建过程我们要敲很多次,MySQL给我们提供了一个对齐进行优化的方法_视图(View)。 视图的创建 比方我们今天需要对一个用户表中id>10的用户进行操作,这个操作要重复好多好多次,那么我们就要写好多次这样的代码 select *from (select * from table where id>10) as t; 这个时候,为了提高效率,我们就可以创建一个视图 create view v1 as select * from table where id>10; 这个时候我们只需要调用v1就可以了。 注意:视图是一个虚拟的表,是动态的

封神台靶机练习第一章:SQL注入攻击原理

可紊 提交于 2020-02-05 22:09:16
封神台靶机练习第一章:SQL注入攻击原理 1、查看参数的传递方式,选择在哪里进行测试攻击 方法:调出网页控制台,观查网络状况,通过消息头查看参数提交的方式 通过对消息头的分析,可以看出请求方法为get方式,因此我们就只要在浏览器地址栏中进行注入测试即可。如果为其他请求方式,如post,delete,update等等,可以借助postman工具进行测试。 2、判断该网站是否能够进行SQL攻击注入 2.1、观查地址栏地址,猜sql语句 http://59.63.200.79:8003/?id=1 根据?后面的参数可知,该请求肯定是根据id来查询内容,查询参数为id,因此我猜的SQL语句为: select * from 表名 where id = 参数id 2.2、判断该网站能否进行简单的SQL注入攻击 判断思路:根据所猜SQL语句进行判断 #参数id = 1 时,后台查询的sql语句应该为: select * from 表名 where id = 1 判断1:当参数id = 1'是否显示正常 测试结果如图:所查询的文章并没有显现,心中窃喜,1'被当作参数传递到了数据库服务器中并执行了,因此可能存在SQL注入风险,此时的SQL语句为: select * from 表名 where id = 1' 判断2:当参数id = 1 or 1=1 和 id = 1 or 1=2是,是否显示正常

jpa自定义sql语句

爷,独闯天下 提交于 2020-02-05 00:06:42
/** * 查询还没生成索引的帖子 * @return */ @Query(value = "SELECT * FROM t_article WHERE index_state=0",nativeQuery = true) public List<Article> getArticleNoIndex(); /** * 更改索引为true */ @Transactional @Modifying @Query(value = "UPDATE t_article SET index_state = TRUE WHERE id =?1",nativeQuery = true) public void updateArticleIndex(Integer id); 简单例子: @Query(value = "select name,author,price from Book b where b.price>?1 and b.price<?2") List<Book> findByPriceRange(long price1, long price2); Like表达式: @Query(value = "select name,author,price from Book b where b.name like %:name%") List<Book> findByNameMatch(

SQL注入(SQL Injection)总结

偶尔善良 提交于 2020-02-04 20:10:03
注: 全文以 MySQL 数据库为例。 文章目录 1、SQL注入简述 2、SQL注入分类 3、SQL注入流程 4、SQL注入防范 1、SQL注入简述 SQL注入(SQL Injection)是指,由于开发人员在编写网站的数据交互代码,也就是拼接的SQL语句时,对用户输入的参数没有做安全过滤,导致用户输入的一些不合法的查询参数被成功解析,并在数据库中执行,窃取数据库内容。 产生原因: 构建的SQL语句中包含了不被信任的数据,如用户输入信息等,但是又没有做安全防范。 比如某站点构建的查询语句参数是id值,一般都是传入id = 1、2、3等这类数字,但是当用户非法输入参数:id = 1 and database(),那么就有可能查询出当前的数据库名,以此类推。 SQL注入由于直接对网站的内部数据造成威胁,窃取和修改用户信息,破坏数据的机密性和完整性,因此 危害极大 ,前些年这类漏洞比较多,但是随着各种框架的产生,和程序员本身的安全意识的提升,目前SQL注入漏洞已经很少了。 2、SQL注入分类 SQL注入的分类比较多,是从以下几个不同的角度来分类的: 参数类型、注入位置、结果反馈。 参数类型: 数字型 :注入点的参数是整型,也就是 id = id 字符型 :注入点的参数是字符型,也就是 id = ‘id’。(宽字节注入也属于字符型) 注入位置: GET注入 :注入位置在URL参数中

Spring中的IoC(4)

混江龙づ霸主 提交于 2020-02-04 18:21:16
Spring中的IoC(4) 基于xml的IoC案例 public interface AccountDAO { /** * 查询所有 * @return */ List < Account > findAllAccount ( ) ; /** * 通过id查询所有 * * @param id * @return */ Account findAccountById ( int id ) ; /** * 保存数据 * @param account */ void saveAccount ( Account account ) ; /** * 修改 * @param account */ void updateAccount ( Account account ) ; /** * 通过id删除 * @param id */ void deleteById ( int id ) ; } public class AccountDAOImpl implements AccountDAO { private QueryRunner runner ; public void setRunner ( QueryRunner runner ) { this . runner = runner ; } @Override public List < Account > findAllAccount

MySQL学习笔记(13)--预处理

只愿长相守 提交于 2020-02-03 17:42:03
·概念 prepare statement,一种预先编译SQL指令的方式 (然后命令执行) 预处理不同于直接处理,是将要执行的SQL指令先发送给服务器编译,然后通过指令执行 ●发送预处理: prepare 预处理名字 from '要执行的SQL指令' ●执行预处理: execute 预处理名字 预处理管理 ●预处理属于 会话级别 :即当前用户当次连接有效 (断开会被服务器清理掉) ●删除预处理: deallocate / drop 预处理名字 示例 #普通操作 select * from my_stuent ; #预处理操作:发送预处理 prepare p1 from 'select * from my_stuent' ; #预处理操作:执行预处理 execute p1 ; #删除预处理 deallocate prepare p1 ; ·作用 性能优化 效率优化 :同样的SQL不用每次都进行编译(编择耗时) 普通处理:每次都需要编译 预处理:编译一次 网络传输优化 :复杂的SQL指令只需要传输一-次 普通处理:每次都需要网络传输SQL指令 预处理:传输一次SQL指令,以后都是执行指令 安全:有效防止SQL注入(外部通过数据的特殊使用使得SQL的执行方式改变) 普通处理:直接发送给服务器执行(容易出现SQL注入) 预处理:发送的是结构,数据是后期执行传入(传入协议不一样,数据安全性高

MySQL基础之ⓓ pymysql模块

a 夏天 提交于 2020-02-03 16:56:26
1、安装模块 windows下cmd,输入下列命令: pip3 install pymysql 2、demo 1 import pymysql 2 3 conn = pymysql.connect(host='localhost', user='root', password='', database='test_db', port=3306) 4 5 cursor = conn.cursor(pymysql.cursors.DictCursor) 6 7 username = input('>>>').strip() 8 9 sql = 'select * from student where sname = "%s"' % username 10 11 print(sql) 12 13 affect_lines_no = cursor.execute(sql) 14 15 result = cursor.fetchone() # 每执行一次,取一条记录 16 17 cursor.close() 18 conn.close() 19 20 # 问题:sql注入,如:输入 uu" or 1=1 -- " 21 # 数据库中没有uu该字段,但是得到了结果! 22 # 查看发出的sql语句就知道了:select * from student where sname = "uu" or