惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Secure Thoughts
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
Securelist
云风的 BLOG
云风的 BLOG
M
MIT News - Artificial intelligence
Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
C
CERT Recently Published Vulnerability Notes
H
Hackread – Cybersecurity News, Data Breaches, AI and More
S
SegmentFault 最新的问题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
K
Kaspersky official blog
WordPress大学
WordPress大学
I
Intezer
L
Lohrmann on Cybersecurity
V
Vulnerabilities – Threatpost
C
Check Point Blog
A
About on SuperTechFans
AWS News Blog
AWS News Blog
Latest news
Latest news
宝玉的分享
宝玉的分享
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
小众软件
小众软件
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
C
Cyber Attacks, Cyber Crime and Cyber Security
SecWiki News
SecWiki News
Recorded Future
Recorded Future
Last Week in AI
Last Week in AI
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Register - Security
The Register - Security
A
Arctic Wolf
V2EX - 技术
V2EX - 技术
Hacker News: Ask HN
Hacker News: Ask HN
V
V2EX
Scott Helme
Scott Helme
I
InfoQ
Project Zero
Project Zero
Security Archives - TechRepublic
Security Archives - TechRepublic
Recent Announcements
Recent Announcements
Spread Privacy
Spread Privacy
Attack and Defense Labs
Attack and Defense Labs
大猫的无限游戏
大猫的无限游戏
Webroot Blog
Webroot Blog
N
News and Events Feed by Topic
博客园 - 司徒正美
Microsoft Security Blog
Microsoft Security Blog
The GitHub Blog
The GitHub Blog
NISL@THU
NISL@THU
L
LangChain Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

博客园 - 尚書

类似于GROUP BY SUM() 用于字符串连接的语句 UBUNTU 14.04 INSTALL nsenter UBUNTU 14.04 DOCKER 1.4.1 Redis On Windows Run Redis On Windows C#.NET 加密解密:AES/DES/Base64/RSA/MD5/SHA256 Random Mongo的主从同步,以及备份与恢复 Mongodb 更多操作 Mongodb的备份/还原 mongodump/mongorestore itextsharp多语言(中日韩等)填表解决 [C#]HttpWebRequest、HttpWebRespoonse、WebRequest and WebResponse、WebClient差异 [筆記] string.Format 格式整理 微软放出五大语种Windows 8消费者预览版ISO镜像 [SQL SERVER] 数字补0 [SQL SERVER] 用SQL语句读取Execl数据 [SQL SERVER] 跨库查询--分布式查询 CSharpJExcel Read/Write Excel Install MongoDB as a windows service
[MVC] 获取请求时缺少"+"的处理办法 How to fix the bug that missing plus in Request.QueryString/Form
尚書 · 2012-02-03 · via 博客园 - 尚書

最近一段时间在做跟某公司数据对接的工作,我们双方的技术人员在观察对接数据的时候,发现部分数据无法通过MD5加密验证。

原始代码如下

1 [HttpPost]
2 public ActionResult Index(string lcData)
3 {
4     string lcDataDecode = HttpUtility.UrlDecode(lcData, Encoding.UTF8);
5     string response = DoSometing(lcDataDecode);
6 
7     return RedirectToAction("Index");
8 }

通过双方数据对比,发现上述代码中lcData的值是已经通过Decode之后的值,并不是原始的数据。由于这次Decode,导致数据中的加号“+”被过滤掉。

请参考一下dudu的文章HttpUtility.UrlEncode、HttpUtility.UrlDecode、Server.UrlEncode、Server.UrlDecode的区分与应用

在网上查找了一些解决办法,很多人提到用 Request.QueryString["key"].Replace(" ", "+"); 来处理。但是我们的数据无法这样处理,因为传递的数据中本身就有空格“ ”的存在。

因此,我们寻找到了下面的方法

 1 [HttpPost]
 2 public ActionResult Index(string lcData)
 3 {
 4     Regex r = new Regex(@"lcData=(?<value>[^&=]+)"); //针对我们的需求,如果需要解析所有的可以用(?<name>[^&=]+)=(?<value>[^&=]+)
 5     Match m = r.Match(Request.Params.ToString());
 6 
 7     lcData = m.Groups[1].Value;
 8     string lcDataDecode = HttpUtility.UrlDecode(lcData, Encoding.UTF8);
 9 
10     string response = DoSometing(lcDataDecode);
11 
12     return RedirectToAction("Index");
13 }

希望能帮助到其他有需要的朋友。