html中%3c%3e括号,encodeURLComponent编码问题

问题所处环境:IIS 7.5, ASP.NET 4.0, 应用程序池(Application Pool)运行于集成模式(Integrated)。

我们查了一下,具体的错误信息是:

A potentially dangerous Request.QueryString value was detected from the client (t="...9)-解析Table.Attach引发的异常和解决方法...").

错误信息分析:为了防止XSS跨站脚本攻击,IIS的默认安全设置不允许查询字符串中包含尖括号,而这次网摘收藏操作却违反了这个规定,于是引发了这个错误。

对于这个问题,你也许会说这么简单的问题也好意思写篇博客,肯定是通过url参数传递标题时没有编码。如果真是这样,也会写篇博客,但不是技术分享,而是检讨书。

刚开始看到这个错误时,的确闪过这样的念头 —— 难道真的忘了编码?。。。不会的,记得编了。打开代码一看,松了一口气,检讨书不用写了,但技术分享必须的,当然前提是解决了问题。

上网摘中用到的js代码:

var url = 'http://home.cnblogs.com/wz/create?t=' + encodeURIComponent(document.title);

看!刚刚的!encodeURIComponent,经过无数次实践证明过的有效的Javascript Url Encode方式。

可是,现在竟然出问题了。。。

首先怀疑是不是页面标题中没有对标题内容进行HTML编码。检查确认,编码了:

LINQ那些事(9)-解析Table<T>.Attach引发的异常和解决方法 - 海南K.K - 博客园

接着,看一下document.title的值:

LINQ那些事(9)-解析Table.Attach引发的异常和解决方法 - 海南K.K - 博客园

竟然自动进行HTML解码了!这还是第一次发现!解码也没关系啊,encodeURIComponent对尖括号也会编码。

继续前进,看一下encodeURIComponent(document.title)的值:

LINQ%E9%82%A3%E4%BA%9B%E4%BA%8B(9)-%E8%A7%A3%E6%9E%90Table%3CT%3E.Attach%E5%BC%95

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值