前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库安全·Token 认证

数据库安全·Token 认证

作者头像
netkiller old
发布2018-03-05 17:22:43
1K0
发布2018-03-05 17:22:43
举报
文章被收录于专栏:NetkillerNetkiller

以下节选择《Netkiller Architect 手札》

作者:netkiller

地址 http://www.netkiller.cn/architect/

接下来几周的话题是数据库安全。

5.7. Token 认证

我们在staff表的基础上增加 token 字段

代码语言:javascript
复制
		CREATE TABLE `staff` (
	`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '员工ID',
	`name` VARCHAR(50) NOT NULL COMMENT '员工名字',
	`token` VARCHAR(32) NOT NULL COMMENT 'Token 校验',
	PRIMARY KEY (`id`)
)
COMMENT='员工表'
COLLATE='utf8_general_ci'
ENGINE=InnoDB;		

插入数据的时候增加一些干扰字符串,这里使用concat(NEW.id,'+',NEW.name,'-')

代码语言:javascript
复制
		CREATE DEFINER=`root`@`%` TRIGGER `staff_before_insert` BEFORE INSERT ON `staff` FOR EACH ROW BEGIN

if md5(concat(NEW.id,'+',NEW.name,'-')) != NEW.token then
		SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Permission denied', MYSQL_ERRNO = 1001;
	end if;

END		

注意表权限可以授权给用户,触发器权限不让普通用户查看。否则用户看到 concat(NEW.id,'+',NEW.name,'-') 就没有意义了。

下面开始测试:

代码语言:javascript
复制
		INSERT INTO `test`.`staff` (`name`, `token`) VALUES ('John', '678797066');
/* SQL错误(1001):Permission denied */	

下面再测试,首先生成一个正确的tokon, 然后使用该token插入数据:

代码语言:javascript
复制
		-- 通过下面语句生成一个 Token
select md5(concat('5','+','Jam','-')) as token;

-- 使用上面的 Token 插入数据
INSERT INTO `test`.`staff` (`id`, `name`, `token`) VALUES (5, 'Jam', '1b033ce21cbadacabc9f0c38fb58dbb2');

SELECT * FROM `test`.`staff` WHERE `id` = 5;		

开发注意事项, Token 生成算法要保密,不要使用下面SQL提交数据

代码语言:javascript
复制
INSERT INTO `test`.`staff` (`id`, `name`, `token`) VALUES (5, 'Jam', md5(concat('5','+','Jam','-')));		

应该分两步,一是计算Token,二是插入数据。可以将Token计算交给程序而不是SQL,并且封装在。jar(Java)中或者。so(PHP 扩展中).

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Netkiller 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 5.7. Token 认证
相关产品与服务
数据安全审计
腾讯云数据安全审计(Data Security Audit,DSAudit)是一款基于人工智能的数据库安全审计系统,可挖掘数据库运行过程中各类潜在风险和隐患,为数据库安全运行保驾护航,是企业的等保合规利器。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档