我接受上传到我的网站的文件。那么,encodeURIComponent文件名是一种安全的做法吗?还是应该使用escape((?还是有必要?
您永远不应该对任何使用escape
(除非因为您将信息发送到将使用unescape
的东西而被迫使用(。
是否需要使用encodeURIComponent
完全取决于是否将文件名直接用作URI组件。如果你是,是的,你应该使用它。如果你不是,不,你可能不应该。
URLSearchParams
(通常是更好的做法(创建查询字符串时,encodeURIComponent
获取一个字符串并对其进行转义,以确保安全地插入到URI中,通常用于查询字符串数据。
如果要将字符串插入到URI中,则可以使用它,但可能应该使用URLSearchParams
来构造整个查询字符串。
如果你没有在URI中插入字符串,那么你可能不应该使用它
escape
已弃用,不应使用。它不适用于Unicode属性。
接受文件的考虑通常更多地沿着";这会意外覆盖现有文件吗"以及";我的文件系统允许这个文件名中的字符吗&";。
有些人更喜欢生成一个全新的文件名(例如,使用guid库(以确保其安全。您可以将原始名称存储在数据库中(此时应通过参数化查询处理转义(。