webAPI过滤器添加参数签名
项目需求:
接口对安卓和IOS开发接口,需要房子用户窜改数据请求接口。添加sign签名校验参数。
代码如下:加上特性标签就可以控制部分接口验证
public class SignAuthorizeFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext filterContext)
{ var actionList = filterContext.ActionDescriptor.GetCustomAttributes<EncryptDataAttribute>();
var controllList = filterContext.ControllerContext.ControllerDescriptor.GetCustomAttributes<EncryptDataAttribute>(); if (actionList.Any()|| controllList.Any())
{
string key = ConfigSection.Get("Key");
if (!string.IsNullOrWhiteSpace(key))
{
var result = new AjaxResCode();
//1.验证入参
string token = HttpContext.Current.Request.Params["token"];
string appkey = HttpContext.Current.Request.Params["appkey"];
string timestamp = HttpContext.Current.Request.Params["timestamp"];
string digest = HttpContext.Current.Request.Params["digest"];
string v = HttpContext.Current.Request.Params["v"]; if (string.IsNullOrWhiteSpace(token) ||
string.IsNullOrWhiteSpace(appkey) ||
string.IsNullOrWhiteSpace(timestamp) ||
string.IsNullOrWhiteSpace(digest) ||
string.IsNullOrWhiteSpace(v))
{
result.Message = "请求非法。。。。!";
result.ResultCode = (int)ResultCode.Nopermit;
filterContext.Response = filterContext.Request.CreateResponse(HttpStatusCode.OK, result);
} NameValueCollection coll = HttpContext.Current.Request.Form;
StringBuilder paramStr = new StringBuilder(); var keys = new List<string>();
foreach (string param in coll.Keys)
{
if (!string.IsNullOrEmpty(param))
{
keys.Add(param.ToLower());
}
} keys.Sort();
foreach (string p in keys)
{
if (p != "digest")
{
if (!string.IsNullOrEmpty(coll[p]))
{
paramStr.Append(coll[p]);
}
}
}
paramStr.Append(key);
if (DESEncrypt.MD5ToUpper(paramStr.ToString()) != digest)
{
result.Message = "请求非法!。。。。。";
result.ResultCode = (int)ResultCode.Nopermit;
filterContext.Response = filterContext.Request.CreateResponse(HttpStatusCode.OK, result);
}
}
} base.OnActionExecuting(filterContext);
} }
webAPI过滤器添加参数签名的更多相关文章
- [置顶]
webapi token、参数签名是如何生成的
一个问题 在这里我想问大家一句,如果你向一个刚刚接触.net web后端程序开发的同学(别人刚刚也就学了webform的request,response,会提交表单的这种刚接触不久的同学),你怎么去解 ...
- webapi token、参数签名是如何生成的(转载)
API接口保障安全性原则:1.有调用者身份2.请求的唯一性3.请求的参数不能被篡改4.请求的有效时间 在刚接触接口开发时,可能脑子里压根就没有这个接口调用安全性的原则,但常识性的经验告诉我们,每一个请 ...
- WebApi安全性 参数签名校验(结合Axios使用)
接口参数签名校验,是WebApi接口服务最重要的安全防护手段之一. 结合项目中实际使用情况,介绍下前后端参数签名校验实现方案. 签名校验规则 http请求,有两种传参形式: 1.通过url传参,最常见 ...
- WebApi基于Token和签名的验证
最近一段时间在学习WebApi,涉及到验证部分的一些知识觉得自己并不是太懂,所以来博客园看了几篇博文,发现一篇讲的特别好的,读了几遍茅塞顿开(都闪开,我要装逼了),刚开始读有些地方不理解,所以想了很久 ...
- C# WebApi 过滤器的使用开发接口必备利器
在WEB Api中,引入了面向切面编程(AOP)的思想,在某些特定的位置可以插入特定的Filter进行过程拦截处理.引入了这一机制可以更好地践行DRY(Don’t Repeat Yourself)思想 ...
- Asp.Net Mvc4 Webapi Request获取参数
最近用mvc4中的WEBAPI,发现接收参数不是很方便,跟传统的request.querystring和request.form有很大区别,在网上搜了一大圈,各种方案都有,但不是太详细,于是跟踪Act ...
- RDLC中添加参数,用来显示报表中数据集之外的信息。
我添加了两个参数,首先后台: ReportParameter rp = ,,).ToString()); ReportParameter rp1 = new ReportParameter(" ...
- c#数据绑定(4)——向查询中添加参数
本实例主要练习了ADO.Net 连接到外部数据库的基础上,向查询中添加参数.使用的是ACCESS数据库. 在ACCESS数据库中可以用MSSQL的形式定义操作字符串,也可以采用OLEDB的形式. MS ...
- 在VS中向命令行添加参数的方法
在VS中向命令行添加参数的方法 在VS中向命令行添加参数,即向main()函数传递参数的方法: 右键单击要 添加参数的工程-->属性-->配置属性-->调试,在右侧“命令参数”栏输入 ...
随机推荐
- GBK、GB2312和UTF-8编码区分
GBK包含全部中文字符, GBK的文字编码是双字节来表示的,即不论中.英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1. 至于UTF-8编码则是用以解决国际上字符的一种多字节编码,它对 ...
- Android getWidth和getMeasuredWidth的区别
getWidth 得到的事某个View的实际尺寸. getMeasuredWidth 得到的是某个View想要在parent view里面占的大小 相比你也见过这样的解释,听起来这样的解释也是云里雾里 ...
- SNNU女装T台走秀(状压dp)
呜啦啦啦啦啦啦~~!!SNNU首届女装T走秀大赛开始了! 本次比赛共有N名队员希望参加比赛:ddjing希望这次比赛尽可能的吸睛,因此他决定对N名队员进行一次海选: 多亏ddjing有一双发现美的眼睛 ...
- webfrom 做项目的注意事项
1.展示细节 如男女显示问题 不能显示true false 时间转换成中文 民族显示汉字 不能直接显示代码2.用户名重复验证 从数据库中查询验证4.日期判断 判断年份有点问题 var y ...
- multi-mechanize安装实践
关于multi-mechanize的详细介绍参见如下链接,是其官网 http://testutils.org/multi-mechanize/setup.html multi-mechanize是一款 ...
- 3dsmax里面的喷射器spray和超级喷射器superspray是个什么东西
以前搜索过粒子系统的一些资料,最早有一篇什么论文里提到一种方法可以用计算机模拟一些看起来数目比较多的一些效果,比如 很多雨滴.下雪天的雪花,作者把这个东西叫particle system,就是粒子系统 ...
- 利用HTML5 与CSS3 做的放大镜
利用HTML5 与CSS3 做的放大镜 html结构 <div class="wrap"> <div class="move"> < ...
- SSH框架(三) struts2的登陆示例
因为最近在学习使用SSH框架(struts2+spring+hibernate),下面来介绍表现层struts2的使用方法. (一)添加struts2的包 见上一篇博客,先看一下添加的各个文件的目录结 ...
- How a web page loads
The major web browsers load web pages in basically the same way. This process is known as parsing an ...
- Python如何打包EXE可执行文件
一.安装Pyinstaller 使用Python打包EXE可执行文件时,需要使用Pyinstaller,使用命令pip install PyInstaller进行安装,如下图: 安装成功后的效果如下图 ...