URL编码安全分隔符
所以我正在工作的站点有一个过滤系统,它通过查询字符串传递一个键和值系统来运行 整个网站正在经历一个重新因素很快,我正在维护现有的网站,所以在我们讨论正确的方法来实现这一点之前,我只需要改变我的分隔符的想法 当前格式如下所示:URL编码安全分隔符,url,urlencode,Url,Urlencode,所以我正在工作的站点有一个过滤系统,它通过查询字符串传递一个键和值系统来运行 整个网站正在经历一个重新因素很快,我正在维护现有的网站,所以在我们讨论正确的方法来实现这一点之前,我只需要改变我的分隔符的想法 当前格式如下所示: cf=: 问题是,我最近遇到了一个问题,因为这个过滤器的一些新值包含:。即:cf=MO_AspectRatio:16:10 值正在进行URL编码,但浏览器正在将%3a动态地反编码为:,因为:本身不会破坏URL 我需要一些关于url安全分隔符的建议,这些分隔符不是有意义的:,
cf=:
问题是,我最近遇到了一个问题,因为这个过滤器的一些新值包含:
。即:cf=MO_AspectRatio:16:10
值正在进行URL编码,但浏览器正在将%3a动态地反编码为:,因为:本身不会破坏URL
我需要一些关于url安全分隔符的建议,这些分隔符不是有意义的:,-
,
,&
,?
。我不是在寻找像()
这样的解决方案,也不是什么疯狂的东西。管道呢
cf=MO_AspectRatio|16:10
最直接的解决方案是对整个字符串进行base64编码,然后在输入时对其进行base64解码 另一种选择是在输出前对其进行两次URL编码,然后在输入时对其进行一次URL解码(php或apache会自动对所有输入进行URL解码,可能不确定是谁执行此操作)。有助于了解更多有关未保留字符和保留字符的信息 就目前而言,这可能是最好的选择。但它迟早会破裂的可能性仍然存在。或者,您应该在用户输入时正确地记录并验证它。允许两个有效的参数分隔符:
&
和代码>。我一直都见过前者,从来没有见过后者。需要使用?
符号来正确标识查询字符串的开头,因此我不建议使用它。URL上使用的/
也是如此
任何不属于这些角色且不属于您的值的字符都是可以接受的。下面是一个可能的列表,按我自己的偏好排序,不包括您明确拒绝的那些:
,
+
|
#
$
代码>
他们中的任何一个都应该这样做
此外,即使您明确要求不要:在将来的重构中,尝试使用真实的URI参数(使用&)。将为您节省大量的资金。是的,这是网站重建中的计划,或者可能是当前网站过滤机制的重建。今天,我更关心的是数据更改不会破坏现有功能。谢谢:)