C# XML 내용 안전하게 읽기

XML 파일을 로드 시도하는 부분에 보안 이슈가 있어서 처리한 내용

XML 파일을 검증 없이 로드하다가 공격 코드에 노출될 수 있어서 처리한 함수


public static Stream GenerateStreamFromString(string s)

{

    MemoryStream stream = new MemoryStream();

    StreamWriter writer = new StreamWriter(stream);

    writer.Write(s);

    writer.Flush();

    stream.Position = 0;

    return stream;

}


public static XmlDocument XmlLoadIgnoreDTD(string xml)

{

    Stream stream = GenerateStreamFromString(xml);

    XmlDocument xmlDoc = new XmlDocument();

    try

    {

        XmlReaderSettings settings = new XmlReaderSettings();

        settings.ProhibitDtd = false;

        settings.XmlResolver = null;

        XmlReader reader = XmlReader.Create(stream, settings);

        xmlDoc.Load(reader);

    }

    catch (Exception x)

    {

        return xmlDoc;

    }

    finally

    {

        stream.Close();

    }

    return xmlDoc;

}





Comment List

Write Comment

'프로그래밍/C#'에 해당되는 글 23건