it-swarm.cn

在url中使用哪些特殊字符是安全的?

在url中使用哪些特殊字符是安全的?

13
YOU

除了用于参数的保留字符外,安全字符是a-z,A-Z,0-9和_ - (下划线和负号)。

其他角色会在某种程度上给出问题。例如:如果一个参数是一个数组?param=array[content] ie将显示一个url whit方形括号url编码,这看起来很丑陋,不可能指示。

但问题不仅在于它的丑陋,让我们说你有一个带有更安全的角色的jpg,很多时候浏览器将无法下载它获得404.这是旧浏览器和一些移动浏览器的问题。

如何测试?

  • 在一个包含许多访问者的公共页面中,将一堆图像/ js/css与要测试的字符放在公共页面中
  • 让404页面每次收到热门时都会向您发送电子邮件

我有一个包含14000封电子邮件的收件箱证明了我的观点。

10
The Disintegrator

以下字符在URL的路径组件中具有特殊含义(路径组件是'?'之前的所有内容):

  ";" | "/" | "?"

除此之外,以下字符在您的URL的查询部分(“?”之后的所有内容)中具有特殊含义。因此,如果他们是'?'之后你需要逃脱它们:

  ":" | "@" | "&" | "=" | "+" | "$" | ","

有关更深入的解释,请参阅 RFC

11
Thomas Bonini

这里的答案很好,但还有一个我认为值得一提的例外 - 非英语字符。引用 这里的SF问题 ,像ñ(如在西班牙语中)这样的字符是完全合法的,如果它们已经在您的DNS中正确编码。

您必须在DNS中使用 Punycode 才能让它们在现代浏览器中解析(español的条目是xn--espaol-zwa)但现在这些在域名中使用非常安全,因为它们'很容易让非英语人士输入。

3
Mark Henderson