我应该让数据库字段保存多长时间来保存用户代理字符串?
How long should I make database field to save useragent strings?
我正在定制一个登录系统,出于安全原因,我被要求记录所有身份验证请求。
我打算做的一件事是记录传入的用户代理字符串,并在请求时将它们翻译成 Request from: (Chrome/Windows)
或 Request from: (Firefox/Mac)
等显示
我的 varchar 字段在 MySQL 中的长度应该是多少?
以后是否需要整个useragent字符串才能准确判断客户端的browser/os信息?或者是否有一些用户代理规范允许我只从中提取一个子字符串并丢弃 "useless information".
的其余部分
简短回答:即使它任意大,一些用户代理仍会被切断。
更长的答案:除非您计划在 User-Agent 上放置一个索引(如果它只是为了 record/display 目的,我不明白您为什么要这么做),没有理由使用 VarChar 而不是一个足够长的文本字段。
或者,您可以寻找一个 User-Agent 解析库,将字符串转换为更有用的内容,例如 "Chrome/Windows" 或 "Safari/iPhone",在这种情况下,您可以合理地使用较短的 VarChar 值。
User-Agent 字符串完全没有规范。它们完全是任意的,尽管许多都遵循一些您不能总是为所有用户代理假设的通用模式。
总而言之,您的 3 个选项是:
- 获取一个库来有意义地解析它们
- 选择一个任意的 varchar 长度并接受一些将被切断
- 使用文本字段
我正在定制一个登录系统,出于安全原因,我被要求记录所有身份验证请求。
我打算做的一件事是记录传入的用户代理字符串,并在请求时将它们翻译成 Request from: (Chrome/Windows)
或 Request from: (Firefox/Mac)
我的 varchar 字段在 MySQL 中的长度应该是多少?
以后是否需要整个useragent字符串才能准确判断客户端的browser/os信息?或者是否有一些用户代理规范允许我只从中提取一个子字符串并丢弃 "useless information".
的其余部分简短回答:即使它任意大,一些用户代理仍会被切断。
更长的答案:除非您计划在 User-Agent 上放置一个索引(如果它只是为了 record/display 目的,我不明白您为什么要这么做),没有理由使用 VarChar 而不是一个足够长的文本字段。
或者,您可以寻找一个 User-Agent 解析库,将字符串转换为更有用的内容,例如 "Chrome/Windows" 或 "Safari/iPhone",在这种情况下,您可以合理地使用较短的 VarChar 值。
User-Agent 字符串完全没有规范。它们完全是任意的,尽管许多都遵循一些您不能总是为所有用户代理假设的通用模式。
总而言之,您的 3 个选项是:
- 获取一个库来有意义地解析它们
- 选择一个任意的 varchar 长度并接受一些将被切断
- 使用文本字段