Lindungi dan analisis fail
Dalam Protect Mode, policy pengurusan kandungan membolehkan kawalan ke atas pelbagai jenis kandungan fail seperti kod boleh laku, kandungan borang interaktif dan beberapa tindakan (cth., pautan luaran atau pelaksanaan JavaScript). Elemen fail ini diketahui sebagai vektor serangan yang lazim apabila ditemui dalam fail. policy pengurusan kandungan akan mentakrifkan cara Glasswall Embedded Engine harus memproses struktur ini. Dalam Analysis Mode, perkara ini dilaporkan sebagai SanitisationItems. policy pengurusan kandungan berbeza mengikut jenis fail yang disokong.
Pembetulan automatik kembali kepada spesifikasi fail juga dilakukan semasa penjanaan semula fail. Tujuannya adalah untuk membolehkan Glasswall Embedded Engine membuang ancaman yang tersembunyi dalam struktur fail, serta mencegah kemungkinan pengaktifan eksploit melalui penyalahgunaan komponen struktur dalam fail. Dalam Analysis Mode, perkara ini dilaporkan sebagai RemedyItems.
Fail boleh dilindungi secara individu daripada laluan fail atau dalam memori menggunakan kaedah protect_file atau protect_directory.
Contoh
- Protect
- Lindungi daripada laluan fail ke laluan fail
- Lindungi daripada laluan fail ke memori
- Lindungi daripada memori
- Lindungi fail dalam direktori
- Lindungi fail dalam direktori yang mungkin mengandungi jenis fail yang tidak disokong
- Lindungi fail dalam direktori menggunakan policy pengurusan kandungan tersuai
- Lindungi fail dalam direktori secara bersyarat berdasarkan format fail
- Analysis
- Analisis daripada laluan fail ke laluan fail
- Analisis daripada laluan fail ke memori
- Analisis daripada memori
- Analisis fail dalam direktori
- Analisis fail dalam direktori yang mungkin mengandungi jenis fail yang tidak disokong
- Analisis fail dalam direktori menggunakan policy pengurusan kandungan tersuai
- Analisis fail dalam direktori secara bersyarat berdasarkan format fail
- Lindungi dan Analisis
Lindungi
Lindungi dari laluan fail ke laluan fail
import glasswall
# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")
# Use the default policy to sanitise a file, writing the sanitised file to a new path
editor.protect_file(
input_file=r"C:\gwpw\input\TestFile_11.doc",
output_file=r"C:\gwpw\output\editor\protect_f2f\TestFile_11.doc",
)
Lindungi dari laluan fail ke memori
protect_file mengembalikan bait fail yang telah dilindungi. Contoh di bawah menunjukkan penetapan pemboleh ubah file_bytes. Kita dapat melihat bahawa selepas sanitasi, 8 bait pertama file_bytes sepadan dengan tandatangan fail untuk format Microsoft Compound File Binary (CFB), D0 CF 11 E0 A1 B1 1A E1.
import glasswall
# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")
# Use the default policy to sanitise a file in memory, returning the file bytes in memory
file_bytes = editor.protect_file(
input_file=r"C:\gwpw\input\TestFile_11.doc"
)
assert file_bytes[:8] == b'\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1'
Lindungi dari memori
import glasswall
# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")
# Read file from disk to memory
with open(r"C:\gwpw\input\TestFile_11.doc", "rb") as f:
input_bytes = f.read()
# Use the default policy to sanitise a file
file_bytes = editor.protect_file(
input_file=input_bytes,
)
assert file_bytes[:8] == b'\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1'
Lindungi fail dalam direktori
import glasswall
# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")
# Use the default policy to protect a directory of files, writing the sanitised files to a new directory.
editor.protect_directory(
input_directory=r"C:\gwpw\input",
output_directory=r"C:\gwpw\output\editor\protect_directory"
)
Lindungi fail dalam direktori yang mungkin mengandungi jenis fail yang tidak disokong
Tingkah laku lalai bagi pembungkus Python Glasswall adalah untuk membangkitkan pengecualian yang berkaitan (lihat: glasswall.libraries.editor.errors) jika pemprosesan gagal. Memberikan raise_unsupported=False akan menghalang pengecualian daripada dibangkitkan dan boleh berguna apabila bekerja dengan direktori yang mengandungi campuran jenis fail yang disokong dan tidak disokong, apabila adalah diingini untuk memproses sebanyak mungkin fail dan bukannya menamatkan proses pada kegagalan pertama.
import glasswall
# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")
# Use the default policy to protect a directory of files, writing the sanitised files to a new directory.
editor.protect_directory(
input_directory=r"C:\gwpw\input_with_unsupported_file_types",
output_directory=r"C:\gwpw\output\editor\protect_directory_unsupported",
raise_unsupported=False
)
Lindungi fail dalam direktori menggunakan policy pengurusan kandungan tersuai
Menggunakan glasswall.content_management.policies.Editor:
import glasswall
# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")
# Use a custom Editor policy to sanitise all files in the input directory
# and write them to the input_sanitised directory. If macros are present
# in ppt or word files, the file will be marked as non-conforming and blocked.
# If internal or external hyperlinks are present in word files they will not
# be sanitised, and will remain in the regenerated document.
editor.protect_directory(
input_directory=r"C:\gwpw\input",
output_directory=r"C:\gwpw\output\editor\protect_directory_custom",
content_management_policy=glasswall.content_management.policies.Editor(
default="sanitise",
config={
"pptConfig": {
"macros": "disallow",
},
"wordConfig": {
"internal_hyperlinks": "allow",
"external_hyperlinks": "allow",
"macros": "disallow",
}
}
)
)
Lindungi fail dalam direktori secara bersyarat berdasarkan format fail
Contoh di bawah menunjukkan pemprosesan hanya fail .doc dan .docx daripada direktori bersarang yang mengandungi pelbagai format fail.
import os
import glasswall
# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")
input_directory = r"C:\gwpw\input"
output_directory = r"C:\gwpw\output\editor\protect_directory_file_format"
# Iterate relative file paths from input_directory
for relative_file in glasswall.utils.list_file_paths(input_directory, absolute=False):
# Construct absolute paths
input_file = os.path.join(input_directory, relative_file)
output_file = os.path.join(output_directory, relative_file)
# Get the file type of the file
file_type = editor.determine_file_type(
input_file=input_file,
as_string=True,
raise_unsupported=False
)
# Protect only doc and docx files
if file_type in ["doc", "docx"]:
editor.protect_file(input_file, output_file)
Analisis
Laporan Embedded Engine menyediakan penerangan terperinci yang tidak bergantung pada jenis fail bagi data dan direkodkan dalam format XML. Struktur laporan ini mengikuti Analysis Report XSD, yang direka untuk memudahkan penghuraian dan pemprosesan, memastikan integrasi dan analisis data yang lebih mudah. Lihat Engine Reporting.
Fail boleh dianalisis secara individu daripada laluan fail atau dalam memori menggunakan kaedah analyse_file, atau semua fail daripada direktori boleh dianalisis menggunakan kaedah analyse_directory.
Analisis daripada laluan fail ke laluan fail
import glasswall
# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")
# Use the default policy to analyse a file, writing the analysis report to a new path
editor.analyse_file(
input_file=r"C:\gwpw\input\TestFile_11.doc",
output_file=r"C:\gwpw\output\editor\analyse_f2f\TestFile_11.doc.xml",
)
Analisis daripada laluan fail ke memori
analyse_file mengembalikan bait fail xml laporan analisis. Contoh di bawah menunjukkan penetapan pemboleh ubah analysis_report dan pemeriksaan kandungan pada bahagian awal laporan analisis Editor.
import glasswall
# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")
# Use the default policy to analyse a file
analysis_report = editor.analyse_file(
input_file=r"C:\gwpw\input\TestFile_11.doc",
)
assert analysis_report[:500] == b'<?xml version="1.0" encoding="utf-8"?>\n<gw:GWallInfo xsi:schemaLocation="http://glasswall.com/namespace/gwallInfo.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gw="http://glasswall.com/namespace">\n\t<gw:DocumentStatistics>\n\t\t<gw:DocumentSummary>\n\t\t\t<gw:TotalSizeInBytes>35840</gw:TotalSizeInBytes>\n\t\t\t<gw:FileType>doc</gw:FileType>\n\t\t\t<gw:Version>Not Applicable</gw:Version>\n\t\t\t<gw:InputSHA256>9FDE85B8800C1019D2865FA298A7F75873E09870B71F9825827E354B865686A6</gw:InputSHA256>\n\t\t\t<gw'
Analisis daripada memori
import glasswall
# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")
# Read file from disk to memory
with open(r"C:\gwpw\input\TestFile_11.doc", "rb") as f:
input_bytes = f.read()
# Use the default policy to analyse a file
analysis_report = editor.analyse_file(
input_file=input_bytes,
)
assert analysis_report[:500] == b'<?xml version="1.0" encoding="utf-8"?>\n<gw:GWallInfo xsi:schemaLocation="http://glasswall.com/namespace/gwallInfo.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gw="http://glasswall.com/namespace">\n\t<gw:DocumentStatistics>\n\t\t<gw:DocumentSummary>\n\t\t\t<gw:TotalSizeInBytes>35840</gw:TotalSizeInBytes>\n\t\t\t<gw:FileType>doc</gw:FileType>\n\t\t\t<gw:Version>Not Applicable</gw:Version>\n\t\t\t<gw:InputSHA256>9FDE85B8800C1019D2865FA298A7F75873E09870B71F9825827E354B865686A6</gw:InputSHA256>\n\t\t\t<gw'
Analisis fail dalam direktori
import glasswall
# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")
# Use the default policy to analyse a directory of files, writing the analysis reports to a new directory.
editor.analyse_directory(
input_directory=r"C:\gwpw\input",
output_directory=r"C:\gwpw\output\editor\analyse_directory"
)
Analisis fail dalam direktori yang mungkin mengandungi jenis fail yang tidak disokong
Tingkah laku lalai bagi pembungkus Python Glasswall adalah untuk membangkitkan pengecualian yang berkaitan (lihat: glasswall.libraries.editor.errors) jika pemprosesan gagal. Memberikan raise_unsupported=False akan menghalang pengecualian daripada dibangkitkan dan boleh berguna apabila bekerja dengan direktori yang mengandungi campuran jenis fail yang disokong dan tidak disokong, apabila adalah diingini untuk memproses sebanyak mungkin fail dan bukannya menamatkan proses pada kegagalan pertama.
import glasswall
# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")
# Use the default policy to analyse a directory of files, writing the analysis reports to a new directory.
editor.analyse_directory(
input_directory=r"C:\gwpw\input_with_unsupported_file_types",
output_directory=r"C:\gwpw\output\editor\analyse_directory_unsupported",
raise_unsupported=False
)
Analisis fail dalam direktori menggunakan policy pengurusan kandungan tersuai
Menggunakan glasswall.content_management.policies.Editor:
import glasswall
# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")
# Use a custom Editor policy to analyse all files in the input directory
# and write them to analyse_directory_custom directory. If macros are
# present in ppt or word files, a GeneralFail exception will be raised if the
# raise_unsupported argument is left at its default value of False, but the
# analysis report will still be written to file and will contain IssueItems.
# If internal or external hyperlinks are present in word files they will not
# be sanitised, and will remain in the regenerated document.
editor.analyse_directory(
input_directory=r"C:\gwpw\input",
output_directory=r"C:\gwpw\output\editor\analyse_directory_custom",
content_management_policy=glasswall.content_management.policies.Editor(
default="sanitise",
config={
"pptConfig": {
"macros": "disallow",
},
"wordConfig": {
"internal_hyperlinks": "allow",
"external_hyperlinks": "allow",
"macros": "disallow",
}
}
),
raise_unsupported=False
)
Analisis fail dalam direktori secara bersyarat berdasarkan format fail
Contoh di bawah menunjukkan pemprosesan hanya fail .doc dan .docx daripada direktori bersarang yang mengandungi pelbagai format fail.
import os
import glasswall
# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")
input_directory = r"C:\gwpw\input"
output_directory = r"C:\gwpw\output\editor\analyse_directory_file_format"
# Iterate relative file paths from input_directory
for relative_file in glasswall.utils.list_file_paths(input_directory, absolute=False):
# Construct absolute paths
input_file = os.path.join(input_directory, relative_file)
output_file = os.path.join(output_directory, relative_file + ".xml")
# Get the file type of the file
file_type = editor.determine_file_type(
input_file=input_file,
as_string=True,
raise_unsupported=False
)
# Analyse only doc and docx files
if file_type in ["doc", "docx"]:
editor.analyse_file(input_file, output_file)
Lindungi dan Analisis
Fungsi peringkat tinggi ini membolehkan anda menjalankan kaedah Protect with Analysis dalam satu sesi. Untuk maklumat lanjut, lihat pautan dokumentasi di bawah.