<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Netsparker Standard 自定義報告

    自定義報告

    Netsparker Standard允許您創建和定義自己的Web安全掃描報告模板。它們可用于生成適合您的業務需求的自定義報告,以及與其他軟件應用程序集成。

    定制報告工具使用運行C#代碼的Razor模板引擎來生成報告。

    如何創建自定義Web安全掃描報告

    1. 創建現有模板的副本。
    2. 在模板上進行必要的更改。
    3. 將此模板移到“文檔/ Netsparker /資源/報告模板”。
    4. 現在可以導出報告

    自定義Netsparker標準報告的代碼示例

    Netsparker的腳本語言是C#。以下是Web安全報告的示例代碼,該報告生成一個XML文件,其中包括以下內容:

    • 掃描期間檢測到的所有漏洞的列表
    • 易受攻擊的參數和請求方法(GET / POST)
    • 漏洞詳情
    • 確認狀態
    • 額外的利用數據
    • 網絡安全掃描時間
    • 漏洞嚴重性

    您可以將更多詳細信息添加到報告中,對其進行自定義,或使用自定義條件過濾報告。

    這是可用于創建自定義Netsparker標準報告的代碼示例。

    @using System@using System.IO@using System.Linq@using MSL.Common.Text;@using MSL.Core.Configuration@using MSL.Core.Data.Resources@using MSL.Core.Entities.Vulnerability@using MSL.Core.Process.Exploitation@using MSL.Core.Process.Reporting;@inherits HelperBaseTemplate<ReportTemplateData><?xml version="1.0" encoding="utf-8" ?><?xml-stylesheet href="vulnerabilities-list.xsl" type="text/xsl" ?><netsparker generated="@DateTime.Now.ToString()">        <target>                <url>@ReportingUtility.XmlShortEscape(Model.ScanProfile.Uri.AbsoluteUri)</url>                <scantime>@Convert.ToInt32(ScanSettings.Instance.ElapsedTime.TotalSeconds)</scantime>        </target>        @{                var reportOutput = new FileInfo(Model.ReportFilePath);                try                {                        File.Copy(string.Format(@"{0}/vulnerabilities-list.xsl", ResourceCategories.ReportTemplate.ResolveCustomDirectoryPath()), string.Format(@"{0}/vulnerabilities-list.xsl", reportOutput.Directory.FullName), true);                }                catch (Exception)                {                }                // Sort vulnerabilities based on their severity, Type, confirmation and certainty                var sortedVulns = from IVulnerabilityView v in Model.Vulnerabilities                        orderby v.Severity descending, v.Order ascending, v.Type ascending, v.IsConfirmed descending, v.Certainty descending, v.AbsolutePath                        where v.Visibility != VulnerabilityVisibility.Hidden && !v.IsIgnored                        select v;                foreach (var vuln in sortedVulns)                {                        if (vuln.Visibility != VulnerabilityVisibility.Hidden)                        {                                <vulnerability confirmed="@vuln.IsConfirmed.ToString()">                                        <url>@ReportingUtility.XmlShortEscape(vuln.AbsoluteUri)</url>                                        <type>@vuln.Type</type>                                        <severity>@vuln.Severity.ToString()</severity>                                        <certainty>@vuln.Certainty</certainty>                                        @if (!string.IsNullOrEmpty(vuln.AttackParameterName))                                        {                                                <vulnerableparametertype>@ReportingUtility.XmlShortEscape(vuln.AttackParameterTypeName)</vulnerableparametertype>                                                <vulnerableparameter>@ReportingUtility.XmlShortEscape(vuln.AttackParameterName)</vulnerableparameter>                                                <vulnerableparametervalue>@ReportingUtility.XmlShortEscape(vuln.AttackParameterValue)</vulnerableparametervalue>                                        }                                        <rawrequest>@ReportingUtility.XmlEscapeCharacterData(vuln.GetRawRequest())</rawrequest>                                        <rawresponse>@ReportingUtility.XmlEscapeCharacterData(vuln.GetFullResponse())</rawresponse>                                        <extrainformation>                                                @foreach (var field in vuln.CustomFields)                                                {                                                        <info name="@field.Key">@ReportingUtility.XmlEscapeCharacterData(field.Value.HasMultipleValues ? string.Join(", ", field.Value.Values) : field.Value.Value)</info>                                                }                                        </extrainformation>                                        @{                                                var renderer = new ProofXmlDataRenderer();                                                <proofs>@renderer.Render(vuln)</proofs>                                        }                                        @if (vuln.Classification != null)                                        {                                                <classification>                                                        <OWASP2013>@vuln.Classification.Owasp2013</OWASP2013>                                                        <WASC>@vuln.Classification.Wasc</WASC>                                                        <CWE>@vuln.Classification.Cwe</CWE>                                                        <CAPEC>@vuln.Classification.Capec</CAPEC>                                                        <PCI31>@vuln.Classification.Pci31</PCI31>                                                        <PCI32>@vuln.Classification.Pci32</PCI32>                                                        <HIPAA>@vuln.Classification.Hipaa</HIPAA>                                                </classification>                                        }                                        @if (vuln.VersionVulnerabilities.Any())                                        {                                                <knownvulnerabilities>                                                        @foreach (var implied in vuln.VersionVulnerabilities)                                                        {                                                                <knownvulnerability>                                                                        <title>@implied.Title</title>                                                                        <severity>@implied.Severity</severity>                                                                        <references>@(implied.References == null ? string.Empty : implied.References.Trim())</references>                                                                        <affectedversions>@implied.AffectedVersions</affectedversions>                                                                </knownvulnerability>                                                        }                                                </knownvulnerabilities>                                        }                                </vulnerability>                        }                }        }</netsparker>

    保存自定義報告模板

    每次創建新的自定義報告模板時,請將其保存到默認目錄中。該目錄位于Netsparker數據目錄的Resources子目錄中。默認位置是當前Windows用戶的“文檔/我的文檔”目錄。該目錄的完整路徑為Documents / Netsparker / Resources / Report Templates。

    在啟動期間,Netsparker Standard掃描程序會在“報告模板”目錄中掃描C#模板文件(* .cshtml)。如果掃描儀在此文件夾中檢測到新文件,它將作為自定義報告顯示在“報告”選項卡上。

    自定義報告

    定義自定義Web安全報告的文件類型(擴展名)

    C#代碼文件的名稱將在“報告”菜單下可見。選中后,生成的報告將使用自定義報告文件名中的擴展名。應根據報告的內容類型選擇文件擴展名。對于上面的示例報告,它應該是xml。

    例如:

    • “漏洞列表(XML).xml.cshtml”-文件擴展名為“ xml”
    • “漏洞列表為Web.html.cshtml”-文件擴展名為“ html”

    測試自定義報告

    您無需在每次更改自定義報告的源代碼時重新啟動Netsparker Standard。但是,如果在Netsparker打開時進行了模板更改,則需要重新啟動。Netsparker將自定義報告添加到“報告”選項卡后,您需要做的就是再次運行它。如果編譯失敗,將顯示錯誤消息。

    自定義報告的安全性

    報告引擎以當前用戶的權限運行。除非您信任報告的作者,否則請不要運行該報告。

    全面的API文檔

    有關API設置的更多信息,請從Netsparker Standard的“幫助”菜單中,單擊“ 報告API”以查看我們的MSDN風格的API文檔,該文檔隨每個相關代碼更改而更新。

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类