사용자 에이전트 문자열은 얼마나 커질 수 있습니까?


193

데이터베이스에 사용자 에이전트를 저장하려는 경우 얼마나 큰 규모를 수용 하시겠습니까?

UA를 200 미만으로 유지하도록 권장하는 이 기술 문서 를 찾았습니다. 이것이 HTTP 사양에 정의되어있는 것 같지는 않습니다. 내 UA는 이미 149 자이며 각 .NET 버전에 추가되는 것처럼 보입니다.

나는 문자열을 파싱하고 분해 할 수 있지만 오히려 그렇지 않다는 것을 알고있다.


편집
블로그를 기반으로 IE9는 짧은 UA 문자열을 보내도록 변경 될 것입니다. 이것은 좋은 변화입니다.



이 질문을 게시했습니다 : stackoverflow.com/questions/17731699/…
Erx_VB.NExT.Coder

UA 문자열은 무엇입니까? 데이터베이스에서 137자를 가진 문자열 만 찾았습니다 (너무 크지 않음).
Martin Thoma

5 년 전쯤에이 질문을했을 때. UA 줄이 길어지면서 많은 추가 재료가 포함되었습니다 ...
JoshBerke

2
이 스레드에 대한 답변은 여전히 ​​관련이 있습니까? 이 답변의 대부분은 8 살입니다.
Peschke

답변:


114

HTTP 사양은 헤더 길이를 전혀 제한하지 않습니다. 그러나 웹 서버는 허용하는 헤더 크기를 제한 413 Entity Too Large하여 초과하면 던집니다 .

웹 서버 및 해당 설정에 따라 이러한 제한은 4KB에서 64KB (모든 헤더의 총계)에 따라 다릅니다.


11
Apache는 최대 필드 길이를 8k ( httpd.apache.org/docs/2.2/mod/core.html#limitrequestfieldsize ) 로 제한합니다 .
Gumbo

IIS를 사용하고 있기 때문에 서버 제한에 대해 덜 염려합니다. 메모리가 제공되는 경우 여전히 제한이 크지 않다는 것을 알고 있습니다 ....
JoshBerke

6
@Josh-메모리가 잘 작동하며 IIS에서는 기본적으로 16K입니다. ;-)
vartec

70

내가 이것에 걸릴 :

  • 전용 테이블 을 사용하여 UserAgent 만 저장 하십시오 (정규화).
  • 관련 테이블에서 외래 키 값을 저장 하여 UserAgent 자동 증가 기본 키 필드를 다시 가리 킵니다.
  • 실제 UserAgent 문자열을 TEXT 필드 에 저장하고 길이를 신경 쓰지 마십시오.
  • 또 다른이 UNIQUE BINARY(32) (당신의 해시 길이에 따라 64, 128)해쉬 사용자 에이전트

일부 UA 문자열은 음란하게 길어질 수 있습니다. 걱정할 필요가 없습니다. 또한 UA 문자열이 4KB 미만으로 유지되도록 INSERTer에서 최대 길이를 적용하십시오. 누군가 사용자 에이전트에서 이메일을 보내지 않는 한, 그 길이를 넘지 않아야합니다.


1
msdn.microsoft.com/en-us/library/ms187993(v=sql.90).aspx MSDN에 명시된대로 텍스트 필드를 더 이상 사용해서는 안됩니다. 대신 NVARCHAR (MAX)를 사용 하십시오 . 출처 : stackoverflow.com/questions/564755/…
Matt Roy

3
내 데이터베이스에는 10,235 개의 고유 한 사용자 에이전트 문자열이 있습니다. 충돌을 일으키지 않는 가장 빠른 해시 알고리즘을 찾고 싶었습니다. 내 PHP 환경에서 md5는 2.3 초에 충돌없이 빠르게 수행됩니다. 흥미롭게도 나는 crc32와 crc32b를 시도했으며 2.3 초에 충돌없이 수행했습니다. 그러나 md5는 crc32 및 crc32b보다 더 많은 조합을 가지므로 md5는 가능한 충돌이 적습니다. 어쨌든 md5가 내 선택이며 제대로 작동 할 것으로 기대합니다.
noctufaber

2
왜 사용자 에이전트를 해시합니까? 빠른 조회 또는 다른 것입니까?

2
@Boom 조회 및 DB 고유 키로서의 고유성은 너무 길 수 있습니다.
CodeAngry

2
@noctufaber crc32는 해시가 아니며 충돌 방지를 시도하지 않습니다.

29

아파치 로그에서 이와 같은 것을 발견했습니다. 그것은 나에게는 비정상적으로 보이지만 주로 Windows 시스템의 로그에서 그러한 것을 정기적으로 봅니다.

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; 698905066803; 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; 977802026603; 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; 79880866903; 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; 667602028803; 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; 976802687603; 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; 8868030703; 9799030803; 89870703; 97680803; 9669054803; 6979097603; 987708046603; 999608603; 878904803; 998607408903; 968903903; 696900703; 977907491703; 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; 88980714603; 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) 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) 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)


36
이 사용자 에이전트로 진행중인 작업에 대해 의견을 남기고 싶은 사람이 있습니까? lol 내가 추가해야합니다, 나는 그러한 짐승이 어떻게 형성 될 수 있는지 궁금합니다.
Erx_VB.NExT.Coder

22
누군가 궁금하다면; 이것은 8010 자로 표시 됩니다. 브라우저 팀의 누군가가 이것이 좋은 생각이라고 어떻게 생각할 수 있었습니까? 그것은 고양이의 가방처럼 화가입니다!
닥터 존스

15
256 또는 512에서이 사용자 에이전트 문자열을 자르면 유용한 데이터가 제거됩니까?
JackAce

12
나는 약간의 관찰을했지만 아직 해결하지 못했습니다. 642숫자 가 있습니다. 처음 네 개의 숫자는 항상 6, 7, 8, 또는 9. 다섯 번째 숫자는 항상 0입니다. 마지막 세 항상 603, 703, 803, 또는 903. 아마도 누군가 그 패턴을 인식 할 수 있습니까? (반감기 3 확인?)
meshy

흥미 롭군 이제 DB 로그의 경우 UA 문자열을 255 자로 자르는 코드를 추가했습니다.
Deepak Thomas

28

데이터베이스 용도로 사용되며 실질적인 제한이 없으므로 UserAgentId가 Int이고 UserAgentString이 NVarChar (MAX) 인 UserAgents 테이블을 사용하고 원래 테이블에 외래 키를 사용합니다.


20
아마도 사용자와 일대일 관계로 사용자 에이전트를 사용하게 될 것입니다. 대부분의 사용자 에이전트는 사용자가 설치 한 항목에 따라 조정되며, 특정 순서에 따라 거의 개인적으로 식별 할 수 있습니다 (다른 답변은 이에 대한 좋은 예가 있습니다). 실제로, EFF는 이에 관한 연구 (pdf) 를 수행했습니다.
patridge

1
링크를위한 @patridge +1, 매우 좋은 학습. 사용자 에이전트 문자열뿐만 아니라 여러 지문을 확인하기 때문에 약간의 주제입니다. 실제 시나리오에서 한 달에 수백만 페이지 뷰를 얻는 사이트의 경우 수천 개의 사용자 에이전트 문자열이 생겨 정규화가 IMHO에 적합합니다. 그 말로, 데이터베이스에 사용자 에이전트 문자열을 저장하는 데별로 긍정적이지 않습니다. : P
Diadistis

@patridge 연구 링크가 끊겼습니다 : 업데이트 된 링크
Boris Dalstein

1
@patridge 귀하의 아이디어가 그럴듯 해 보이지만 내 데이터는 우리 둘 다에 동의하지 않습니다. 지금 바로 이런 종류의 시스템으로 작업하고 있으며 1.2m 사용자를위한 약 70k의 고유 한 UA가 있습니다. 이 페이지에있는 이유는 데이터베이스 필드의 제한으로 256을 선택하고 70k 중 50k가 잘려서 일부 정보가 손실 되었기 때문입니다. 이제 4k로 늘릴 것입니다. 그들이 잘리지 않았을 때 얼마나 많은 것이 독특했는지 알면 흥미로울 것입니다
Darren H

10

이게 어떻게 큰가요? :

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) 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) 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) 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) 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)


15
점수를 유지하는 사람들은 앞뒤 인용 부호를 포함하여 1546 자입니다.
Doug Harris

6

명시된 제한은 없으며 대부분의 HTTP 서버의 제한 만 있습니다. 그러나이를 염두에두고 합리적인 고정 길이의 열을 구현하고 (Google을 사용하여 알려진 사용자 에이전트 목록을 찾고 가장 큰 것을 찾고 50 %를 추가하십시오) 너무 긴 사용자 에이전트를 자르십시오. 긴 사용자 에이전트는 자른 경우에도 충분히 고유하거나 일종의 버그 또는 "해킹"시도의 결과 일 수 있습니다.


networkinghowtos.com/howto/common-user-agent-list에 따라 표준 길이는 120-150 입니다. 따라서 최대 길이를 200으로 자릅니다
.

4

오늘이 사용자 에이전트를 확보하여 공급 업체의 스토리지 필드를 오버플로했습니다.

Mozilla / 4.0 (호환 가능; 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; OfficeLivePatch.0.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)

어리석은! 229 자?

따라서 그 크기를 두 배로 늘리고 다시 두 배로 늘리면 Microsoft의 다음 번 오류가 발생할 때까지 설정해야합니다 (내년에는 이번에는 가능할 것임).

1000보다 큽니다!


나는 닷넷 CLR과 트라이던트가 모질라와 함께해야합니까 궁금해
Gherman

3

나는 당신에게 표준 답변을 줄 것입니다 :

상상할 수있는 최대한의 가치를 두 배로 높이십시오. 이것이 바로 귀하의 답입니다.


그렇다면 얼마나 클 것이라고 생각하십니까?
JoshBerke

1
물론 내가 생각하는 것보다 두 배. 256은 두 배로 좋은 반올림처럼 보입니다.
Ed Marty

4
나는 우리가 좋은 길이가 무엇인지 알지 못할 때마다 재미 있다는 것을 알았습니다. 우리는 항상 256 또는 2의 배수로 끝납니다.
JoshBerke

3
글쎄, 512는 나에게 10 년 이상의 .net 릴리즈와 다른 정크가 쌓일 수있게 해주었습니다. 다시 한번 감사드립니다
JoshBerke 2016 년

1
@Josh : "그때까지 은퇴하길 바래요"... 전에는 어디서 들었습니까?! ;-)
Cerebrus

3

사용자 에이전트 문자열의 길이에 제한이 없다고 가정하고 이러한 값을 저장할 준비를하십시오. 보시다시피 길이는 예측할 수 없습니다.

Postgres에는 무제한 길이의 문자열을 허용 하는 텍스트 유형이 있습니다. 사용하십시오.

대부분의 경우 어느 시점에서 잘 리기 시작해야합니다. 합리적으로 유용한 증분 (200, 1k, 4k)으로 잘 부르고 나머지는 버립니다.


2

여기에 257 인 것이 있습니다

Mozilla / 4.0 (호환 가능; 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 ; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)


트래픽이 매우 적은 사이트에서 지금까지 최대 255자를 보았습니다. 놀라운 것은 아닙니다. .Net 4.0은 또 다른 20자를 추가 할 것입니다.
JoshBerke

2

우연한 사례를 보여주는 많은 답변이 있지만 http://www.useragentstring.com/pages/useragentstring.php에서 찾을 수있는 가장 길기 때문에 사용자 에이전트가 얼마나 큰지 알 수 없습니다 . name = 모두 250 바이트였습니다.

Mozilla / 4.0 (호환 가능; MSIE 8.0; Windows NT 6.1; Trident / 4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Media Center PC 5.0; SLCC1; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C; Lunascape 6.3.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.