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参数(使用&)。将为您节省大量的资金。

是的,这是网站重建中的计划,或者可能是当前网站过滤机制的重建。今天,我更关心的是数据更改不会破坏现有功能。谢谢:)