Vad är filformatet SER?
En .ser-fil innehåller en Java serialized object stream - en binär kodning av ett eller flera Java-objekt producerade av ObjectOutputStream och som läses tillbaka av ObjectInputStream. Formatet introducerades med Java 1.1 år 1997 och definieras i Java Object Serialization Specification.
Varje giltig .ser-fil börjar med den 4-byte långa magiska sekvensen AC ED 00 05: byte 0-1 innehåller STREAM_MAGIC (0xACED) och byte 2-3 innehåller STREAM_VERSION (0x0005). Strömmen kodar varje objekts klassbeskrivning, fält och nästlade data med hjälp av typade blockmarkörer: TC_OBJECT (0x73), TC_CLASS (0x76), TC_ARRAY (0x75), TC_STRING (0x74) och TC_NULL (0x70).
Serialisering användes i stor utsträckning för att cacha applikationstillstånd, skicka objekt mellan JVM:er och spara konfigurationsdata. Men Java-deserialisering är en känd säkerhetsbrist - illvilligt utformade strömmar kan utnyttja «gadget chains» i klassökvägen för att uppnå fjärrkörning av kod. Java 9 introducerade ObjectInputFilter för att begränsa vilka klasser som får deserialiseras, och moderna Java-rekommendationer avråder starkt från att använda .ser-filer för opålitlig data.
Föredragna moderna alternativ inkluderar JSON (via Jackson eller Gson), Protocol Buffers eller Kryo. GeneMapper (Thermo Fisher Scientific) använder .ser-filer för bioinformatikprojektdata. Verktyget SerializationDumper kan inspektera innehållet i .ser utan att köra dem.
Säkerhet & trygghet
RISK: HIGHJava-deserialisering är en av de mest allvarliga attackytorna i Java-applikationer (historiskt sett OWASP Top 10). Att öppna en opålitlig .ser-fil i en sårbar applikation kan köra godtycklig kod via «gadget chains» (t.ex. Apache Commons Collections-exploateringen, 2015). Slutanvändare bör endast öppna .ser-filer från pålitliga källor och i deras avsedda applikation. För analys av okända .ser-filer: använd SerializationDumper (statisk dump, kör inte innehållet) snarare än att deserialisera dem i en aktiv JVM.
Formatdetaljer
i ett nötskal- GeneMapper Project File - Programvaran Applied Biosystems/Life Technologies GeneMapper använder .ser som sin proprietära behållare för projektdata.
- Generisk datacache för applikationer - Vilken Java-applikation som helst kan serialisera godtyckliga objekt till .ser; innehållet är helt applikationsspecifikt.
Program som öppnar SER-filer
Tekniska detaljer
djup specifikation| Magiska byte | AC ED 00 05 vid offset 0 - STREAM_MAGIC (0xACED) följt av STREAM_VERSION (0x0005) |
| Kodning | Binär, big-endian |
| MIME-typ | application/x-java-serialized-object |
| Serialiserings-API | java.io.ObjectOutputStream (skriv) / java.io.ObjectInputStream (läs); klasser måste implementera java.io.Serializable |
| Protokollversion | Serialiseringsprotokoll version 2 (strömversion 5), stabilt sedan Java 1.2 |
| Klassversionering | Varje klass bäddar in ett serialVersionUID; versionsfel kastar InvalidClassException vid deserialisering |
| Innehållsmarkörer | TC_OBJECT (0x73), TC_CLASS (0x76), TC_ARRAY (0x75), TC_STRING (0x74), TC_NULL (0x70) |
| Säkerhetsrisk | Känd vektor för deserialiseringsattacker via «gadget-chains»; Java 9+ mildrar detta via ObjectInputFilter-vitlistning |
| Typisk storlek | Från några få byte för enkla objekt upp till hundratals MB för stora serialiserade objektgrafer |
| Plattformsoberoende | Läsbar av valfri JVM på Windows, Linux eller macOS; inte portabel utanför Java-ekosystemet |
| Strömkomprimering | Okomprimerad på formatnivå; GZIPOutputStream-paketering kan valfritt tillämpas på applikationsnivå |
| Integritet | Ingen inbyggd kontrollsumma; integritet tillhandahålls genom signering på applikationsnivå eller säker transport |
| Känd applikation | GeneMapper (Thermo Fisher Scientific) använder .ser för bioinformatikprojekt och datafiler |
| Släppt | 1997 (Java 1.1, JDK 1.1) |
| Senaste version | Stream version 5 (serialization protocol version 2, since Java 1.2) |
| Öppen standard | Ja · royaltyfri |
| Specifikation | docs.oracle.com |
SER-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om SER-filer.