Quelle taille un agent utilisateur string peut-il avoir?

si vous deviez stocker un agent utilisateur dans une base de données, quelle taille accepteriez-vous?

j'ai trouvé ce article de technet qui recommande de garder L'UA en dessous de 200. Il ne semble pas que cela soit défini dans la spécification HTTP du moins pas ce que j'ai trouvé. Mon UA compte déjà 149 caractères, et il semble que chaque version de .NET va l'ajouter.

je sais que je peux défaire la corde et la briser mais je plutôt pas.


modifier

Basé sur ce Blog IE9 va changer pour envoyer la chaîne courte UA. C'est un bon changement.


164
demandé sur jeteon 2009-03-17 19:10:57

10 réponses

La spécification HTTP

ne limite pas du tout la longueur des en-têtes. Toutefois, les serveurs web limitent la taille de l'en-tête qu'ils acceptent, en lançant 413 Entity Too Large si elle dépasse.

en fonction du serveur web et de ses paramètres, ces limites varient de 4KB à 64KB (total pour tous les en-têtes).

95
répondu vartec 2013-09-24 11:29:12

mon point de vue sur ceci:

  • utiliser une table dédiée pour stocker seulement les agents utilisateurs (le normaliser)
  • dans vos tableaux connexes, stockez une clé étrangère valeur pour pointer vers L'utilisateur clé primaire d'auto-incrément champ
  • stockez la chaîne UserAgent actuelle dans un champ de texte et ne se soucient pas de la longueur
  • ont un autre UNIQUE BINARY(32) (ou 64, ou 128 selon votre longueur de hachage) et hachage L'utilisateur

certaines cordes UA peuvent être obscénément longues. cela devrait vous épargner les soucis. Appliquez également une longueur maximale dans votre INSERTer pour garder les chaînes UA en dessous de 4KB. À moins que quelqu'un vous envoie un e-mail dans le user-agent, il ne dépassez pas cette longueur.

52
répondu CodeAngry 2012-11-03 15:07:21

puisque c'est pour des buts de base de données et qu'il n'y a pas de limite pratique j'irais pour une Table UserAgents avec UserAgentId comme Int et UserAgentString comme NVarChar(MAX) et utiliserais une clé étrangère sur la table originale.

28
répondu Diadistis 2009-03-17 16:28:26

a remarqué quelque chose comme ça dans nos journaux apache. Cela me semble anormal, mais je vois régulièrement de telles choses dans les logs, la plupart du temps depuis les systèmes Windows.

Mozilla / 4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident / 4.0; (R1 1.6); SLCC1; .NET CLR 2.0.50727; InfoPath.2; Officeliveconnecteur.1.3; Officielivepatch.0,0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; 66760635803; exécution 11.00294; 876906799603; 97880703; 669602703; 9778063903; 877905603; 89670803; 96690803; 8878091903; 7879040603; 999608065603; 799808803; 6666059903; 669602102803; 888809342903; 696901603; 788907703; 887806555703; 97690214703; 66760903; 968909903; 796802422703; 8868026703; 889803611803; 898706903; 977806408603; 976900799903; 9897086903; 88780803; 798802301603; 9966008603; 66760703; 97890452603; 9789064803; 96990759803; 99960107703; 8868087903; 889801155603; 78890703; 8898070603; 89970603; 89970539603; 89970488703; 8789007603; 87890903; 877904603; 9887077703; 798804903; 97890264603; 967901703; 87890703; 97690420803; 79980706603; 9867086703; 996602846703; 87690803; 6989010903; 977809603; 666601903; 876905337803; 89670603; 89970200903; 786903603; 696901911703; 788905703; 896709803; 96890703; 998601903; 88980703; 666604769703; 978806603; 7988020803; 996608803; 788903297903; 98770043603; 899708803; 66960371603; 9669088903; 69990703; 99660519903; 97780603; 888801803; 9867071703; 79780803; 9779087603; 899708603; 66960456803; 898706824603; 78890299903; 99660703; 9768079803; 977901591603; 89670605603; 787903608603; 998607934903; 799808573903; 878909603; 979808146703; 9996088603; 797803154903; 69790603; 99660565603; 7869028603; 896707703; 97980965603; 976907191703; 88680703; 888809803; 69690903; 889805523703; 899707703; 997605035603; 89970029803; 9699094903; 877906803; 899707002703; 786905857603; 69890803; 97980051903; 997603978803; 9897097903; 66960141703; 7968077603; 977804603; 88980603; 989700803; 999607887803; 78690772803; 96990560903; 98970961603; 9996032903; 9699098703; 69890655603; 978903803; 69890505066803; 977806903; 9789061703; 967903747703; 976900550903; 88980934703; 8878075803; 8977028703; 97980903; 9769006603; 786900803; 98770682703; 78790903; 878906967903; 87690399603; 99860976703; 796805703; 87990603; 968906803; 967904724603; 999606603; 988705903; 989702842603; 96790603; 99760703; 88980166703; 9799038903; 98670903; 697905248603; 7968043603; 66860703; 66860127903; 9779048903; 89670123903; 78890397703; 97890603; 87890803; 8789030603; 69990603; 88880763703; 9769000603; 96990203903; 978900405903; 7869022803; 699905422903; 97890703; 87990903; 878908703; 7998093903; 898702507603; 97780637603; 966907903; 896702603; 9769004803; 7869007903; 99660158803; 7899099603; 8977055803; 99660603; 7889080903; 66660981603; 997604603; 6969089803; 899701903; 9769072703; 666603903; 99860803; 997608803; 69790903; 88680756703; 979805677903; 9986047703; 89970803; 66660603; 96690903; 8997051603; 789901209803; 8977098903; 968900326803; 87790703; 98770024803; 697901794603; 69990803; 887805925803; 968908903; 97880603; 897709148703; 877909476903; 66760197703; 977908603; 698902703; 988706504803; 97780202026603; 88680964703; 8878068703; 987705107903; 978902878703; 8898069803; 9768031703; 79680803; 79980803; 669609328703; 89870238703; 99960593903; 969904218703; 78890603; 9788000703; 69690630903; 889800982903; 988709748803; 7968052803; 99960007803; 969900800803; 668604817603; 66960903; 78790734603; 8868007703; 79780034903; 8878085903; 976907603; 89670830803; 877900903; 969904889703; 7978033903; 8987043903; 99860703; 979805903; 667603803; 976805348603; 999604127603; 97790701603; 78990342903; 98770672903; 87990253903; 9877027703; 97790803; 877901895603; 8789076903; 896708595603; 997601903; 799806903; 97690603; 87790371703; 667605603; 99760303703; 97680283803; 788902750803; 787909803; 79780603; Soixante dix neuf milliard huit cent quatre vingt million huit cent soixante six mille neuf cent trois; 9986050903; 87890543903; 979800803; 97690179703; 876901603; 699909903; 96990192603; 878904903; 877904734903; 796801446903; 977904803; 9887044803; 797805565603; 98870789703; 7869093903; 87790727703; 797801232803; 666604803; 9778071903; 9799086703; 6969000903; 89670903; 8799075903; 897708903; 88680903; 97980362603; 97980503903; 889803256703; 88980388703; 789909376803; 69690703; 6969025903; 89970309903; 96690703; 877901847803; 968901903; 96690603; 88680607603; 7889001703; 789904761803; 976807703; 976902903; 878907889703; 9897014903; 896707046603; 696909903; 666603998903; 969902703; 79680421803; 9769075603; 798800192703; 97990903; 9689024903; 668604803; 969908671903; 9996094703; 69990642703; 97890895903; 977805619903; 79980859903; 88980443803; 98970649603; 997602703; 888802169903; 699907803; 66760202028803; 786903283903; 997607703; 969909803; 798809925903; 9976045603; 97790903; 9789001903; 966903603; 9789069603; 968906603; 6989091803; 896701603; 6979059803; 978803903; 997606362603; 88980803; 98970803; 88880921703; 8997065703; 899700703; 698908703; 797801027903; 7889050903; 87890603; 78690703; 99660069703; 97980309903; 976800603; 666606803; 898707703; 79880019803; 66960250803; 7978049803; 88780602603; 79680903; 88880792703; 96990903; 667608603; 87790730903; 98970903; 9699032903; 8987004803; 88880703; 89770046603; 978800803; 969908903; 9798022603; 696901903; 799803703; 989703703; 668605903; 79780903; 998601371703; 796803339703; 87890922603; 898708903; 9966061903; 66960891903; 96790903; 8779050803; 98870858803; 976909298603; 9887029903; 669608703; 979806903; 878903803; 99960703; 9789086703; 979801803; 66960008703; 979806830803; 99760212703; 786906603; 797807603; 789907297703; 96990703; 786901603; 796807766603; 896702651603; 789902585603; 66660925903; 9986085703; 66960302703; 69890703; 789900703; 89970903; 9679060703; 9789002903; 979908821603; 986708140803; 976809828703; 7988082803; 79680997903; 99960803; 9788081903; 979805703; 787908603; 66960602803; 9887098703; 978803237703; 888806804603; 999604703; 977904703; 966904635703; 97680291703; 977809345603; 8878046703; 988709803; 976900773603; 989703903; 88780198603; 87790603; 986708703; 78890604703; 87790544803; 976809850903; 887806703; 987707527603; 79880803; 9897059603; 897709820603; 97880804803; 66960026703; 9789062803; 9867090803; 669600603; 8967087703; 78890903; 89770903; 97980703; Neuf cent soixante seize milliard huit cent deux million six cent quatre vingt sept mille six cent trois; 66860400803; 979901288603; 96990160903; 99860228903; 966900703; 66760603; 9689035703; 9779064703; 7968023603; 87890791903; 98770870603; 9798005803; 6969087903; 9779097903; 6979065703; 699903252603; 79780989703; 87690901803; 978905763903; 977809703; 97790369703; 899703269603; 8878012703; 78790803; 87690395603; 8888042803; 667607689903; 8977041803; 6666085603; 6999080703; 69990797803; 88680721603; 99660519803; 889807603; 87890146703; 699906325903; 89770603; 669608615903; 9779028803; 88880603; 97790703; 79780703; 97680355603; 6696024803; 78790784703; 97880329903; 9699077703; 89870803; 79680227903; 976905852703; 8997098903; 896704796703; 66860598803; 9897036703; 66960703; 9699094703; 9699008703; 97780485903; 999603179903; 89770834803; 96790445603; 79680460903; 9867009603; 89870328703; 799801035803; 989702903; 66960758903; 66860150803; 6686088603; 9877092803; 96990603; 99860603; 987703663603; 98870903; 699903325603; 87790803; 97680703; Huit milliard huit cent soixante huit million trente mille sept cent trois; 9799030803; 89870703; 97680803; 9669054803; 6979097603; 987708046603; 999608603; 878904803; 998607408903; 968903903; 696900703; 97790749491703; 6686033803; 669601803; 99960290603; 887809169903; 979803703; 69890903; 699901447903; 8987064903; 799800603; 98770903; 8997068703; 967903603; 66760146803; 978805087903; 697908138603; 799801603; 88780964903; 989708339903; 8967048603; 88880981603; 789909703; 796806603; 977905977603; 989700603; 97780703; 9669062603; Quatre vingt huit milliard neuf cent quatre vingt million sept cent quatorze mille six cent trois; 897709545903; 988701916703; 667604694903; 786905664603; 877900803; 886805490903; 89970559903; 99960531803; 7998033903; 98770803; 78890418703; 669600872803; 996605216603; 78690962703; 667604903; 996600903; 999608903; 9699083803; 787901803; 97780707603; 787905312703; 977805803; 8977033703; 97890708703; 989705521903; 978800703; 698905703; 78890376903; 878907703; 999602903; 986705903; 668602719603; 979901803; 997606903; 66760393903; 987703603; 78790338903; 96890803; 97680596803; 666601603; 977902178803; 877902803; 78790038603; 8868075703; 99960060603)

22
répondu harry 2012-07-04 14:59:01

C'est comment pour big?:

Mozilla / 4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident / 4.0; YPC 3.2.0; SearchSystem6829992239; SearchSystem9616306563; SearchSystem6017393645; SearchSystem5219240075; SearchSystem2768350104; SearchSystem6919669052; SearchSystem1986739074; SearchSystem1555480186; SearchSystem3376893470; SearchSystem9530642569; SearchSystem4877790286; SearchSystem8104932799; SearchSystem2313134663; SearchSystem1545325372; SearchSystem7742471461; SearchSystem9092363703; SearchSystem6992236221; SearchSystem3507700306; SearchSystem1129983453; SearchSystem1077927937; SearchSystem2297142691; SearchSystem7813572891; SearchSystem5668754497; SearchSystem6220295595; SearchSystem4157940963; SearchSystem7656671655; SearchSystem2865656762; SearchSystem6520604676; SearchSystem4960161466; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Hotbar 10.2.232.0; SearchSystem9616306563; SearchSystem6017393645; SearchSystem5219240075; SearchSystem2768350104; SearchSystem6919669052; SearchSystem1986739074; SearchSystem1555480186; SearchSystem3376893470; SearchSystem9530642569; SearchSystem4877790286; SearchSystem8104932799; SearchSystem2313134663; SearchSystem1545325372; SearchSystem7742471461; SearchSystem9092363703; SearchSystem6992236221; SearchSystem3507700306; SearchSystem1129983453; SearchSystem1077927937; SearchSystem2297142691; SearchSystem7813572891; SearchSystem5668754497; SearchSystem6220295595; SearchSystem4157940963; SearchSystem7656671655; SearchSystem2865656762; SearchSystem6520604676; SearchSystem4960161466; .NET CLR 3.0.4506.2152;. NET CLR 3.5.30729)

9
répondu cd. 2012-07-04 14:57:30

j'ai eu cet agent utilisateur aujourd'hui, débordant le champ de stockage de notre vendeur:

Mozilla / 4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident / 4.0; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; MDDR; OfficeLiveConnector.1.3; Officielivepatch.0.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)

ridicule! 229 caractères?

Alors, prenez cette taille, double, double à nouveau, et vous devriez être réglé jusqu'à la prochaine erreur de Microsoft (peut-être cette fois l'année prochaine).

Aller plus de 1000!

4
répondu bluish 2012-07-04 14:58:13

il n'y a pas de limite indiquée, seulement la limite de la plupart des serveurs HTTP. En gardant cela à l'esprit cependant, je mettrais en œuvre une colonne avec une longueur fixe raisonnable (utilisez Google pour trouver une liste d'agents utilisateurs connus, trouver le plus grand et ajouter 50%), et juste recadrer n'importe quel agent utilisateur qui est trop long - n'importe quel agent utilisateur exceptionnellement long est probablement assez unique même quand recadré, ou est le résultat d'une sorte de bug ou "hack" tentative.

4
répondu David 2012-08-27 12:42:17

je vais vous donner la réponse standard:

prendre la plus grande valeur possible vous pouvez peut-être imaginer qu'il soit, le double, et c'est votre réponse.

2
répondu Ed Marty 2009-03-17 16:13:47

En voici un qui est 257

Mozilla / 4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident / 4.0; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648; Officeliveconnecteur.1,3; OfficeLivePatch.0.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)

2
répondu bluish 2012-07-04 14:59:09

supposons que la chaîne de caractères de l'agent utilisateur n'a pas de limite de longueur et préparez-vous à stocker une telle valeur. Comme vous l'avez vu, la longueur est imprévisible.

dans Postgres, il y a un type text qui accepte les chaînes de longueur illimitée. L'utiliser.

très probablement, vous devrez commencer à tronquer à un moment donné. Appelez-le bon à un incrément raisonnablement utile (200, 1k, 4k) et jeter le reste.

2
répondu Brad Koch 2013-12-23 15:39:50