2018-01-08 11:21:19 wojiaoguchenghuanye 阅读数 3462
  • Java学习指南(8) MySQL数据库与JDBC框架

    一、课程简介 『Java学习指南系列』的第8篇教程 ,介绍MySQL数据库的安装使用,常见SQL语句,以及使用JDBC进行数据库开发的技术。 二、主要内容  * MySQL的安装和使用 * 常用SQL语句,增删改查操作 * 高级SQL查询,多表关联查询 * 表的设计:主键,索引,内连接外连接,外键  * MySQL配置管理: 用户授权,远程访问,备份还原 * JDBC连接: 使用JDBC连接数据库,执行增删改查操作 * 基于JDBC数据库框架的设计(afsql框架),以此阐述数据库框架的设计原理 * JDBC连接池,JDBC数据库开发的必备技术 * 数据库事务 Transaction 的支持  * SQL的转义,数据库注入攻击的预防 * 数据库的动态访问:获取数据库和表的结构,根据表的结构自动生成POJO 三、课程体系 〖Java学习指南系列〗:包含入门与进阶语法,Swing桌面开发,安卓开发,JavaFX开发,网络通信Socket,数据结构与算法等课程。 〖网站开发系列〗 :包含网页基础、网站入门、数据库、网站中级、FreeMarker、网站高级、项目应用、MyBatis、Redis等课程。

    9234 人正在学习 去看看 邵发

两个博文地址:springmvc 防止XSS攻击 && 特殊字符转义和方法入参检测工具类
springmvc 防止XSS攻击 && 特殊字符转义和方法入参检测工具类

XSS攻击,即Cross Site Script,跨脚本攻击,往web页面注入html代码或者script代码,造成页面混乱。
spring mvc框架中,有很多编辑器,每个编辑器有不同的作用,防止XSS攻击,就用到PropertyEditorSupport编辑器
项目中继承该类,写一个StringEscapeEditor类防止脚本或者html代码
public class StringEscapeEditor extends PropertyEditorSupport {

private boolean escapeHTML;// 编码HTML
private boolean escapeJavaScript;// 编码javascript

public StringEscapeEditor() {
super();
}

public StringEscapeEditor(boolean escapeHTML, boolean escapeJavaScript) {
super();
this.escapeHTML = escapeHTML;
this.escapeJavaScript = escapeJavaScript;
}

@Override
public String getAsText() {
Object value = getValue();
return value != null ? value.toString() : “”;
}

@Override
public void setAsText(String text) throws IllegalArgumentException {
if (text == null) {
setValue(null);
} else {
String value = text;
if (escapeHTML) {
value = HtmlUtils.htmlEscape(value);
System.out.println(“value:”+value);
}
if (escapeJavaScript) {
value = JavaScriptUtils.javaScriptEscape(value);
System.out.println(“value:”+value);
}
setValue(value);
}
}
然后绑定控制层就ok了,
在basecontroller中
@Controller
@RequestMapping(“/baseController”)
public class BaseController {

@InitBinder
public void initBinder(ServletRequestDataBinder binder) {
/**
* 自动转换日期类型的字段格式
*/
binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”), true));

/**
* 防止XSS攻击
*/
binder.registerCustomEditor(String.class, new StringEscapeEditor(true, false));

}
其他控制层继承这个basecontroller就可以防止XSS攻击了。
不过只是post方式有效,get方式就没办法了

2015-01-30 10:54:17 CLARK84 阅读数 3615
  • Java学习指南(8) MySQL数据库与JDBC框架

    一、课程简介 『Java学习指南系列』的第8篇教程 ,介绍MySQL数据库的安装使用,常见SQL语句,以及使用JDBC进行数据库开发的技术。 二、主要内容  * MySQL的安装和使用 * 常用SQL语句,增删改查操作 * 高级SQL查询,多表关联查询 * 表的设计:主键,索引,内连接外连接,外键  * MySQL配置管理: 用户授权,远程访问,备份还原 * JDBC连接: 使用JDBC连接数据库,执行增删改查操作 * 基于JDBC数据库框架的设计(afsql框架),以此阐述数据库框架的设计原理 * JDBC连接池,JDBC数据库开发的必备技术 * 数据库事务 Transaction 的支持  * SQL的转义,数据库注入攻击的预防 * 数据库的动态访问:获取数据库和表的结构,根据表的结构自动生成POJO 三、课程体系 〖Java学习指南系列〗:包含入门与进阶语法,Swing桌面开发,安卓开发,JavaFX开发,网络通信Socket,数据结构与算法等课程。 〖网站开发系列〗 :包含网页基础、网站入门、数据库、网站中级、FreeMarker、网站高级、项目应用、MyBatis、Redis等课程。

    9234 人正在学习 去看看 邵发
//增加一菜单时
insert into hsi_menu (C_SYSNAME, L_MENUTYPE, C_PARENTCODE, C_MENUCODE, C_MENUNAME, C_DESCRIBE, L_SHORTCUT, L_FUNCTIONTYPE, C_DLLFILE, C_DLLFUNCTION, L_FUNCTIONID, C_COMMAND, C_ICONFILENAME, L_OUTLOOK, L_ORD, C_RIGHTCODE, C_RIGHTCODE2, C_LEAF, C_ISUSE, C_VERSIONTYPE, C_AUTHCODE)
values ('FUNDCRM', 1, '  092304', '  09230406', '额度分配监控', null, null, 2, 'sale', 'SaleProjectActionTransfer.jsp?svcrightflag=MONITOR&latitude=quota', 0, null, null, 1, 4, null, null, '1', '1', 'trust', null);
commit;


--.oracle中&符是用来定义临时变量的,所以要在oracle中使用&符需要对这个符号进行转义(ASCII编码)


解决方法
1.在执行语句前加set define off;(意思是去掉oracle自定义的字符含义,还原它本来的意思)
set define off;
delete from hsi_menu h where h.c_sysname = 'FUNDCRM' and h.c_menucode = '  09230406';
insert into hsi_menu (C_SYSNAME, L_MENUTYPE, C_PARENTCODE, C_MENUCODE, C_MENUNAME, C_DESCRIBE, L_SHORTCUT, L_FUNCTIONTYPE, C_DLLFILE, C_DLLFUNCTION, L_FUNCTIONID, C_COMMAND, C_ICONFILENAME, L_OUTLOOK, L_ORD, C_RIGHTCODE, C_RIGHTCODE2, C_LEAF, C_ISUSE, C_VERSIONTYPE, C_AUTHCODE)
values ('FUNDCRM', 1, '  092304', '  09230406', '额度分配监控', null, null, 2, 'sale', 'SaleProjectActionTransfer.jsp?svcrightflag=MONITOR&latitude=quota', 0, null, null, 1, 4, null, null, '1', '1', 'trust', null);
commit;


2.用(ASCII编码)对&进行转义chr(38)
insert into hsi_menu (C_SYSNAME, L_MENUTYPE, C_PARENTCODE, C_MENUCODE, C_MENUNAME, C_DESCRIBE, L_SHORTCUT, L_FUNCTIONTYPE, C_DLLFILE, C_DLLFUNCTION, L_FUNCTIONID, C_COMMAND, C_ICONFILENAME, L_OUTLOOK, L_ORD, C_RIGHTCODE, C_RIGHTCODE2, C_LEAF, C_ISUSE, C_VERSIONTYPE, C_AUTHCODE)
values ('FUNDCRM', 1, '  092304', '  09230406', '额度分配监控', null, null, 2, 'sale', 'SaleProjectActionTransfer.jsp?svcrightflag=MONITOR'||chr(38)||'latitude=quota', 0, null, null, 1, 4, null, null, '1', '1', 'trust', null);
commit;


3.不转义,直接字符串的形式写进去。
insert into hsi_menu (C_SYSNAME, L_MENUTYPE, C_PARENTCODE, C_MENUCODE, C_MENUNAME, C_DESCRIBE, L_SHORTCUT, L_FUNCTIONTYPE, C_DLLFILE, C_DLLFUNCTION, L_FUNCTIONID, C_COMMAND, C_ICONFILENAME, L_OUTLOOK, L_ORD, C_RIGHTCODE, C_RIGHTCODE2, C_LEAF, C_ISUSE, C_VERSIONTYPE, C_AUTHCODE)
values ('FUNDCRM', 1, '  092304', '  09230406', '额度分配监控', null, null, 2, 'sale', 'SaleProjectActionTransfer.jsp?svcrightflag=MONITOR'||'&'||'latitude=quota', 0, null, null, 1, 4, null, null, '1', '1', 'trust', null);
commit;
2018-10-26 16:17:30 Dear_BigTiger 阅读数 2971
  • Java学习指南(8) MySQL数据库与JDBC框架

    一、课程简介 『Java学习指南系列』的第8篇教程 ,介绍MySQL数据库的安装使用,常见SQL语句,以及使用JDBC进行数据库开发的技术。 二、主要内容  * MySQL的安装和使用 * 常用SQL语句,增删改查操作 * 高级SQL查询,多表关联查询 * 表的设计:主键,索引,内连接外连接,外键  * MySQL配置管理: 用户授权,远程访问,备份还原 * JDBC连接: 使用JDBC连接数据库,执行增删改查操作 * 基于JDBC数据库框架的设计(afsql框架),以此阐述数据库框架的设计原理 * JDBC连接池,JDBC数据库开发的必备技术 * 数据库事务 Transaction 的支持  * SQL的转义,数据库注入攻击的预防 * 数据库的动态访问:获取数据库和表的结构,根据表的结构自动生成POJO 三、课程体系 〖Java学习指南系列〗:包含入门与进阶语法,Swing桌面开发,安卓开发,JavaFX开发,网络通信Socket,数据结构与算法等课程。 〖网站开发系列〗 :包含网页基础、网站入门、数据库、网站中级、FreeMarker、网站高级、项目应用、MyBatis、Redis等课程。

    9234 人正在学习 去看看 邵发
HTML 转义后
&lt <
&gt >
&amp &
&quot "
&nbsp 空格

 

XML 转义后
&lt <
&gt >
&amp &
&apos '
&quot "

 

 

 

 

 

 

2020-03-29 18:47:20 m0_37681589 阅读数 31
  • Java学习指南(8) MySQL数据库与JDBC框架

    一、课程简介 『Java学习指南系列』的第8篇教程 ,介绍MySQL数据库的安装使用,常见SQL语句,以及使用JDBC进行数据库开发的技术。 二、主要内容  * MySQL的安装和使用 * 常用SQL语句,增删改查操作 * 高级SQL查询,多表关联查询 * 表的设计:主键,索引,内连接外连接,外键  * MySQL配置管理: 用户授权,远程访问,备份还原 * JDBC连接: 使用JDBC连接数据库,执行增删改查操作 * 基于JDBC数据库框架的设计(afsql框架),以此阐述数据库框架的设计原理 * JDBC连接池,JDBC数据库开发的必备技术 * 数据库事务 Transaction 的支持  * SQL的转义,数据库注入攻击的预防 * 数据库的动态访问:获取数据库和表的结构,根据表的结构自动生成POJO 三、课程体系 〖Java学习指南系列〗:包含入门与进阶语法,Swing桌面开发,安卓开发,JavaFX开发,网络通信Socket,数据结构与算法等课程。 〖网站开发系列〗 :包含网页基础、网站入门、数据库、网站中级、FreeMarker、网站高级、项目应用、MyBatis、Redis等课程。

    9234 人正在学习 去看看 邵发

1、linux中的通配符、元字符、转义符

2、转义百科

转义字符

转义字符是很多程序语言、数据格式和通信协议的形式文法的一部分。对于一个给定的字母表,一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义。因此转义字符开头的字符序列被叫做转义序列。
  转义序列通常有两种功能。第一个是编码一个句法上的实体,如设备命令或者无法被字母表直接表示的特殊数据。第二种功能,也叫字符引用,用于表示无法在当前上下文中被键盘录入的字符(如字符串中的回车符),或者在当前上下文中会有不期望的含义的字符(如C语言字符串中的双引号字符",不能直接出现,必须用转义序列表示)。在后面那种情况,转义序列是一种由转义字符自身和一个被引用的字符组成的一个二合字母(digraph)情形。
  
所有的转义字符和所对应的意义:
在这里插入图片描述
注意:

  1. 区分,斜杠:"/" 与 反斜杠:"" ,此处不可互换
  2. \xhh 十六进制转义不限制字符个数 ‘\x000000000000F’ == ‘\xF’ [3]

转义字符不属于控制字符;控制字符也不属于转义字符。

控制字符

转义字符不属于控制字符;控制字符也不属于转义字符。如果控制字符的定义是非图形的字符,或者对输出设备(打印机、文本终端)有特殊意义的字符,那么针对这些设备的转义字符也是控制字符。但是程序设计用的转义字符是图形字符,因此它们不是控制字符。相反地,大多数ASCII控制字符单独都具有控制功能,因此它们不是转义字符。

sql特殊字符转义

阅读数 278

没有更多推荐了,返回首页