我们应该在 Javascript 中用 encodeURIComponent 将文件名括起来吗?
Should we enclose filename with encodeURIComponent in Javascript?
我接受上传到我网站的文件。那么,对文件名进行编码 URIComponent 是否安全?或者我应该使用 escape()?或者有必要吗?
你永远不应该使用 escape
做任何事 (除非因为你要发送信息到将使用 unescape
[不应该] 的东西而被迫这样做).
是否需要使用 encodeURIComponent
完全取决于您是否打算将文件名直接用作 URI 组件¹。如果是,是的,您应该使用它。如果你不是,不,你可能不应该。
¹ 例如,当您手动创建查询字符串时作为查询字符串参数,而不是通过 URLSearchParams
(这通常是更好的做法)
encodeURIComponent
接受一个字符串并将其转义以使其安全地插入 URI,通常用于查询字符串数据。
如果要将字符串插入 URI,则可以使用它,但可能应该使用 URLSearchParams
来构造整个查询字符串。
如果您没有将字符串插入 URI,那么您可能不应该使用它。
escape
已弃用,不应使用。它不适用于 Unicode。属性。
接受文件的注意事项通常更像是“这会意外覆盖现有文件吗?”和“我的文件系统允许使用此文件名中的字符吗?”。
有些人喜欢生成一个全新的文件名(例如使用 guid 库)以确保其安全。您可以将原始名称存储在数据库中(此时您的转义应该由参数化查询处理)。
我接受上传到我网站的文件。那么,对文件名进行编码 URIComponent 是否安全?或者我应该使用 escape()?或者有必要吗?
你永远不应该使用 escape
做任何事 (除非因为你要发送信息到将使用 unescape
[不应该] 的东西而被迫这样做).
是否需要使用 encodeURIComponent
完全取决于您是否打算将文件名直接用作 URI 组件¹。如果是,是的,您应该使用它。如果你不是,不,你可能不应该。
¹ 例如,当您手动创建查询字符串时作为查询字符串参数,而不是通过 URLSearchParams
(这通常是更好的做法)
encodeURIComponent
接受一个字符串并将其转义以使其安全地插入 URI,通常用于查询字符串数据。
如果要将字符串插入 URI,则可以使用它,但可能应该使用 URLSearchParams
来构造整个查询字符串。
如果您没有将字符串插入 URI,那么您可能不应该使用它。
escape
已弃用,不应使用。它不适用于 Unicode。属性。
接受文件的注意事项通常更像是“这会意外覆盖现有文件吗?”和“我的文件系统允许使用此文件名中的字符吗?”。
有些人喜欢生成一个全新的文件名(例如使用 guid 库)以确保其安全。您可以将原始名称存储在数据库中(此时您的转义应该由参数化查询处理)。