우리는 GroupDocs.Annotation for .NET 26.10이 2026년 10월에 출시된 것을 기쁘게 발표합니다. 이번 릴리스는 보안에 중점을 둔 릴리스로, 문서가 더 이상 원격 이미지, 스타일 시트 또는 연결된 파일을 자동으로 가져오지 않으며, 새로운 LoadOptions 멤버를 통해 로드할 항목을 정확히 결정할 수 있습니다. 또한 기본 문서 엔진을 업그레이드하고 취약한 종속성을 업데이트했으며 여러 문제를 수정했습니다.
이번 릴리스의 새로운 기능
| 키 | 카테고리 | 요약 |
|---|---|---|
| ANNOTATIONNET-2663 | ⚠️ 향상 | 외부 리소스가 기본적으로 로드되지 않음 (새 LoadOptions 제어) |
| ANNOTATIONNET-2687 | ✨ 향상 | 기본 문서 엔진 업그레이드 |
| ANNOTATIONNET-2672 | 🔒 보안 | System.Security.Cryptography.Pkcs를 8.0.2로 업데이트 (CVE-2026-84008 / CVE-2026-70162) |
| ANNOTATIONNET-2102 | 🔧 수정 | EML 문서에서 주석을 추출할 때 발생하던 FileTypeNotSupportedException 수정 |
| ANNOTATIONNET-1903 | 🔧 수정 | 이전 버전으로 주석이 달린 문서가 .NET 8에서 열리지 않던 문제 수정 |
| ANNOTATIONNET-2689 | 🔧 수정 | PDF 페이지를 90도 회전했을 때 저장 시 회전이 사라지는 문제 수정 |
외부 리소스가 기본적으로 로드되지 않음
문서는 자체 외부 리소스를 참조할 수 있습니다: HTML 페이지나 이메일 본문의 <img src="https://...">, Word 문서의 연결된 그림, 원격 스타일 시트 또는 외부 워크북 링크 등. 지금까지는 이러한 문서를 열거나 미리 보거나 저장할 때 GroupDocs.Annotation이 네트워크나 파일 공유에서 해당 리소스를 요청했습니다.
신뢰할 수 없는 문서를 처리하는 서버에서는 이것이 서버 측 요청 위조 (SSRF) 위험을 초래합니다: 문서가 서버에게 내부 주소를 호출하게 할 수 있으며, UNC 경로는 프로세스의 Windows 자격 증명을 유출할 수 있습니다.
26.10부터 외부 리소스가 기본적으로 건너뛰어집니다 (Word 처리, HTML, 이메일, 프레젠테이션 및 스프레드시트 문서에 적용):
- 요청 없음. 문서가 참조하는 리소스에 대해 네트워크나 파일 공유 요청이 전혀 이루어지지 않으며, 모든 작업(
Get,Add,Save,GeneratePreview,GetDocumentInfo)에 적용됩니다. - 빈 자리표시자. 건너뛴 이미지는 투명한 자리표시자로 렌더링되며, 원본 링크는 저장된 문서에 그대로 유지됩니다.
- 임베디드 콘텐츠는 계속 작동. 이메일의
cid:파트,data:URI 및 임베디드 그림은 항상 로드됩니다. - 이미지 주석은 영향을 받지 않음.
ImageAnnotation.ImagePath는 여전히 URL에서 로드됩니다.
동작이 변경된 사항입니다. 문서가 원격 이미지나 스타일 시트 렌더링에 의존한다면, 새로운 LoadOptions 멤버를 사용해 명시적으로 허용하십시오:
| 멤버 | 기본값 | 설명 |
|---|---|---|
SkipExternalResources |
true |
외부 리소스를 건너뜁니다. false 로 설정하면 26.10 이전 동작을 복원합니다. |
WhitelistedResources |
empty | 리소스를 건너뛰는 경우에도 로드되는 호스트 이름 또는 절대 URI 접두사. |
ExternalResourceHandler |
null |
각 외부 리소스에 대해 호출됩니다; 리소스를 허용하거나 건너뛰거나 내용을 제공할 수 있습니다. |
신뢰할 수 있는 호스트만 허용하십시오 (권장):
LoadOptions loadOptions = new LoadOptions
{
// SkipExternalResources stays true (the default)
WhitelistedResources = { "cdn.example.com", "https://intranet.example.com/images/" }
};
using (Annotator annotator = new Annotator("input.html", loadOptions))
{
annotator.Save("output.html"); // only images from the two whitelisted locations are loaded
}
핸들러를 사용해 각 리소스를 검사, 허용 또는 대체하십시오:
class AuditingResourceHandler : ExternalResourceHandler
{
public override void OnLoading(ExternalResourceLoadingArgs args)
{
Console.WriteLine($"{args.Uri}: {(args.Skipped ? "skipped" : "loaded")}");
// serve a local copy instead of going to the network
if (args.Uri == "https://example.com/logo.png")
args.Data = File.ReadAllBytes("logo.png");
}
}
업그레이드된 문서 엔진
번들된 워드 처리, 스프레드시트, 프레젠테이션, PDF, 다이어그램, 이메일, 이미지, CAD 및 그래픽 렌더링 엔진이 2026년 10월 릴리스 버전으로 업데이트되었습니다. 재생성된 문서와 페이지 미리보기는 바이트 또는 픽셀 수준에서 약간 차이가 있을 수 있지만 시각적으로는 동일합니다.
.NET 6 및 .NET 8 프로젝트의 경우 런타임 패키지가 이제 SkiaSharp 4.152.1에 의존합니다. 프로젝트가 SkiaSharp 3.x를 직접 참조하고 있다면 4.x로 업데이트하십시오.
보안 업데이트
문서 엔진이 System.Security.Cryptography.Pkcs 8.0.0 또는 8.0.1을 포함했으며, 이는 CVE-2026-84008 및 CVE-2026-70162의 영향을 받습니다. GroupDocs.Annotation은 이제 모든 대상 프레임워크에서 패치된 8.0.2를 참조합니다. 코드 변경은 필요하지 않습니다.
수정 사항
- EML from a stream.
MIME-Version: 1.0으로 시작하는 EML 메시지가 MHT 아카이브로 잘못 인식되어 스트림에서 열 때FileTypeNotSupportedException이 발생했습니다. 이제 이러한 메시지는 스트림이든 파일이든 동일하게 열리며, MHT 파일도 이메일 문서로 지원됩니다. - Older documents on .NET 8. 26.6 이전 버전으로 주석이 달린 문서가 .NET 8에서
NotSupportedException으로 열리지 않았습니다. 이제 열리며, 레거시 주석은 로그 경고와 함께 건너뛰고 새 주석을 추가·저장할 수 있습니다. 재저장된 프레젠테이션(PPTX)에서 주석을 다시 읽지 못하던 관련 문제도 모든 프레임워크에서 해결되었습니다. - PDF rotation by 90 degrees.
Annotator.Rotation을 사용해 PDF 페이지를 180도와 270도에서는 회전했지만, 90도 회전은 저장 시 사라졌습니다. 이제 모든 각도에 대해 회전이 유지됩니다:
using (Annotator annotator = new Annotator("input.pdf"))
{
annotator.ProcessPages = 1; // the page to rotate
annotator.Rotation = RotationDocument.on90; // previously ignored
annotator.Save("output.pdf");
}
공개 API 변경 사항
이번 릴리스에서 다음 멤버가 추가되었습니다:
LoadOptions.SkipExternalResourcesLoadOptions.WhitelistedResourcesLoadOptions.ExternalResourceHandlerExternalResourceHandler클래스ExternalResourceLoadingArgs클래스
공개 멤버가 제거되거나 변경된 것은 없습니다.
업데이트 받는 방법
NuGet
NuGet을 사용해 GroupDocs.Annotation 26.10.0으로 설치하거나 업그레이드하십시오. 패키지는 대상 프레임워크(.NET Framework 4.6.2, .NET 6 또는 .NET 8)에 맞는 런타임 패키지를 자동으로 해결합니다:
dotnet add package GroupDocs.Annotation --version 26.10.0
직접 다운로드
GroupDocs.Annotation for .NET 26.10 페이지에서 릴리스를 다운로드하십시오.