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

推荐订阅源

博客园 - 叶小钗
云风的 BLOG
云风的 BLOG
G
Google Developers Blog
S
SegmentFault 最新的问题
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
美团技术团队
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
DataBreaches.Net
F
Fortinet All Blogs
TaoSecurity Blog
TaoSecurity Blog
D
Docker
C
Cybersecurity and Infrastructure Security Agency CISA
K
Kaspersky official blog
宝玉的分享
宝玉的分享
腾讯CDC
Google Online Security Blog
Google Online Security Blog
Recorded Future
Recorded Future
T
The Exploit Database - CXSecurity.com
T
The Blog of Author Tim Ferriss
V
V2EX
S
Securelist
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
C
CERT Recently Published Vulnerability Notes
A
Arctic Wolf
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
Y
Y Combinator Blog
P
Proofpoint News Feed
T
Tor Project blog
AWS News Blog
AWS News Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
博客园 - 聂微东
T
Threat Research - Cisco Blogs
B
Blog
Attack and Defense Labs
Attack and Defense Labs
L
Lohrmann on Cybersecurity
C
CXSECURITY Database RSS Feed - CXSecurity.com
阮一峰的网络日志
阮一峰的网络日志
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
N
News and Events Feed by Topic
博客园 - 司徒正美
H
Help Net Security
C
Cisco Blogs
C
Check Point Blog
S
Secure Thoughts

博客园 - music000

分享:使用JQuery进行跨域请求 Flash Chart OSI七层网络模型与TCP/IP四层网络模型 一些数据库理论知识 Sqlserver中Compute By子句用法分析 数据查询的另类需求 A Preview of HTML 5 CSS Sprites 15 Rules for Faster-Loading Web Sites 关于"多级目录(分类)"的一些想法 ----- 实现方法 金额转换:阿拉伯数字转中文(SQL存储过程) 金额转换:阿拉伯数字转中文(javascript) 这两天不爽——公车上被误认为色狼、游泳撞破上嘴唇 如何获取字段中分隔符的个数?(sql语句) 关于GridView导出Excel的一些问题(采用Ajax出现的的问题及解决方法) - music000 - 博客园 固定表头 Bubble in JavaScript DOM Reg-日期 安装 WebDesigner 之后,ASPNET 帐户没有对 IIS 的访问权。
谨防 url 传递参数未编码(转码)产生的陷阱
music000 · 2009-03-03 · via 博客园 - music000

      在最近的项目中,碰到些因为 url 传递参数时未编码(转码)所引起的一些“莫名其妙”的错误,特此记下来,以免大家再像我一样走弯路。 

      我们知道,web项目总少不了参数传递的情况,如 http://www.google.cn/search?hl=zh-CN&q=%E5%95%8A,这就带了hl 与 q 两个参数,并且 q 是经过编码的(中文为 “啊”)。但在项目中,我们有时候传递参数却会忘记对参数进行编码(解码、转码),这样,会产生什么样的陷阱呢?

      1、公司原有的OA(asp开发,文件编码:gb2312)与刚开发的内部业务系统(asp.net开发,文件编码:uft-8)进行集成,登陆OA,将用户名写入cookie(cookies["user_name"]),然后在业务系统中读取此 cookie,死活都读取不到,为什么?文件编码不同,导致业务系统里面cookie的名称已经变成了 “user%5Fname”!

      2、业务系统(文件编码:uft-8)内部调用外部的一个php文件(编码:gb2312)发送短信:http://sms.XXX.cn/index.php?controller=BoSends&action=sendSms&username=某公司&password=password&mobile=139********&content=Hello,也是一样发送不成功!看看php文件的编码,才知道是 gb2312,当username 和 password 传递过去的时候,系统里面找不到相关资料,因为username("某公司")已经发生改变了!

      在这两种情况下,我们就必须对文件进行转码了:如2、HttpUtility.UrlEncode("某公司",System.Text.Encoding.GetEncoding("gb2312")),当然我们可以写一个方法:

      

Code

      再有就是在系统内部页面传递参数进行编码:

      3、老板很气愤:XXX,你过来,这个统计系统是你做的吗?
                           我:是的!有什么问题吗?
                       老板:怎么回事?这个链接明明有统计数据的,怎么查询它的详细数据就没有呢?连统计图也看不见!
                           我:我看下...
      
      经检查发现:老板是正确的,那个链接确实有统计数据,但点击查看这个链接的详细数据却没有了! ???

      回到办公桌前,赶紧再试那个链接 http://www.XXX.com/admins/DayChart.aspx?un=ABC&ul=http://p.yiqifa.com/servlet/handleClick?sid=a7e226f4bb8f1a18&pid=221&wid=232

      这个链接需要传递两个参数:un 与 ul,其中,un=ABC ,ul=http://p.yiqifa.com/servlet/handleClick?sid=a7e226f4bb8f1a18

,但在参数传递之后,ul 变成了什么?也许你已经发现了:ul=http://p.yiqifa.com/servlet/handleClick?sid=a7e226f4bb8f1a18&pid=221&wid=232。是的,ul 已经变成了 http://p.yiqifa.com/servlet/handleClick?sid=a7e226f4bb8f1a18 ,pid 与 wid 被当成了 DayChart.aspx 的参数了!

      4、统计某页面所有的链接及图片点击,1分钟内重复点击不入库,采用cookie保存用户点击数据,静态页面采用脚本异步向服务器传递数据。在本机运行应用程序实现需求,但在服务器上就出现问题了:点击 N 多不同的链接,只会录入前两条数据!

      难道是域名的问题?服务器的应用程序使用了域名,而本机还是localhost。于是修改了host文件,给本机模拟域名,问题重现了,本机和服务器出现的问题一模一样,只插入两条数据!

      看看代码,考虑到对cookie的操作较特殊,于是每次点击将 Cookie 写入文本文件,再进行检查,检查发现:写入的cookie值与预期的不一样...

      cookie需要写入客户端的,有可能是文件的编码产生的问题吗?嗯!于是在写入cookie之前,对字符串进行编码,获取cookie之后,再对 cookie 内的字符串进行解码。问题解决了,服务器上可以正常插入数据了...

      但为什么采用域名会出现那样的错误呢???(期待...)

      3、4采用的编码、解码:HttpUtility.UrlEncode(str) 、HttpUtility.UrlDecode(str)

      另外附下:js脚本提交页面时,注意中文参数的传递 (escape(str))
      SomeOne:啊???这个也附上来...  地球人都知道啊!        
      我: 哈哈...啰嗦下! 

      以上只是项目中遇到的编码问题,记录下来,希望对大家有所帮助,同时,不正确的地方希望大家告知,谢谢!