Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
כברירת מחדל, Aspose.Words עבור Java ניתן לטעון משאבים מרוחקים כגון תמונות, סגנונות CSS, או מסמכי HTML חיצוניים בעת ייבוא מסמכים או הוספת תמונות באמצעות מסמך בונה. התנהגות זו מאפשרת לך לעבד את המסמכים שלך בפירוט מלא אבל יכול להיות סיבה של כמה סיכונים אבטחה אם הספריה היא חלק יישום אינטרנט.
במאמר זה, אנו בודקים סוגיות אבטחה נפוצות שיכולות להתעורר כאשר הן טוענות משאבים חיצוניים ומספקות המלצות כיצד להימנע מבעיות כאלה.
ישנם מספר בעיות אבטחה טיפוסיות בעת טעינת משאבים חיצוניים.
On On Windows- מארחים מבוססים, מסמכים המכילים הפניות למשאבים המשתמשים בנתיבים של האו"ם כגון * “example.com\a\b*” יעובדו כברירת מחדל. בסביבה דומיין, זה יגרום למארח לשלוח את אישורי התחום שלו בפורמט מעוגל לשרת שצוין.
אם תוקף יכול לשכנע משתמש או שרת לעבד מסמך עם קישור משאבים כזה מצביע על מארח שהם שולטים, התוקף יקבל את אישור המשתמש או השירות בפורמט NTLM hash. לאחר מכן ניתן להשתמש בנתונים אלה בהתקפה קלאסית של מעבר-האש, מה שמאפשר לתוקפים לקבל גישה לכל משאב כמשתמש הקורבן או חשבון שירות.
אם החשבון המדובר משתמש בסיסמה חלשה או סבירה, התוקף יכול גם לבצע פיגוע פצח סיסמה כדי לשחזר את הסיסמה של החשבון לשימוש זדוני נוסף.
בדומה למקרה הקודם, עיבוד מסמך עם התייחסות לקובץ תמונה מקומי יביא לקובץ זה הכלול במסמך הסופי. זה יכול להוביל לגילוי מידע רגיש.
תוקף יכול להעלות מסמך שהתייחס אליו או כלל תמונות גדולות מאוד - מה שנקרא “הפצצות מדכאות”. בעת עיבוד התמונות האלה, הספרייה תצרכו כמויות עצומות של זיכרון וזמן CPU.
תוקף יכול ליצור סדרה של מסמכים המכילים קישורים משובצים לשילובים משותפים של כתובת IP פנימית ונמל, ולאחר מכן להגיש אותם לשירות אינטרנט באמצעות שירות אינטרנט. Aspose.Words ספרייה לעיבוד המסמכים
בהתבסס על משך הזמן השימוש בשירות כדי לעבד את המסמך, התוקף יכול לקבוע אם שילוב IP/פורט נתון מסונן על ידי חומת אש:
כדי לפתור את הבעיות המתוארות לעיל ולשפר את האבטחה של יישומי אינטרנט, אתה יכול לשלוט או להשבית טעינה של משאבים חיצוניים באמצעות שימוש IResourceLoadingCallback.
דוגמה לקוד הבא מראה כיצד להשבית תמונות חיצוניות טעינה:
Java
public void loadDocument(String documentFilename) throws Exception
{
LoadOptions disableExternalImagesOptions = new LoadOptions();
disableExternalImagesOptions.setResourceLoadingCallback(new DisableExternalImagesHandler());
Document doc = new Document(documentFilename, disableExternalImagesOptions);
}
public static class DisableExternalImagesHandler implements IResourceLoadingCallback
{
public /*ResourceLoadingAction*/int resourceLoading(ResourceLoadingArgs args)
{
// Skip external images loading.
return (args.getResourceType() == ResourceType.IMAGE)
? ResourceLoadingAction.SKIP
: ResourceLoadingAction.DEFAULT;
}
}
דוגמה לקוד הבא מראה כיצד להשבית משאבים מרוחקים:
Java
public void loadDocument2(String documentFilename) throws Exception
{
LoadOptions disableRemoteResourcesOptions = new LoadOptions();
disableRemoteResourcesOptions.setResourceLoadingCallback(new DisableRemoteResourcesHandler());
Document doc = new Document(documentFilename, disableRemoteResourcesOptions);
}
private static class DisableRemoteResourcesHandler implements IResourceLoadingCallback
{
public /*ResourceLoadingAction*/int resourceLoading(ResourceLoadingArgs args) throws Exception
{
return isLocalResource(args.getOriginalUri())
? ResourceLoadingAction.DEFAULT
: ResourceLoadingAction.SKIP;
}
// Simplified code.
private static boolean isLocalResource(String fileName) throws Exception
{
String protocol = null;
URI uri = new URI(fileName);
if (uri.isAbsolute())
{
protocol = uri.getScheme();
}
else
{
URL url = new URL(fileName);
protocol = url.getProtocol();
}
return "file".equalsIgnoreCase(protocol);
}
}
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.