PHPAnalysis.Analysis.CFG.Taint.TaintBlockAnalyzer.CheckForXssVulnerabilities C# (CSharp) Метод

CheckForXssVulnerabilities() приватный Метод

private CheckForXssVulnerabilities ( ExpressionInfo expressionInfo, XmlNode node ) : void
expressionInfo ExpressionInfo
node System.Xml.XmlNode
Результат void
        private void CheckForXssVulnerabilities(ExpressionInfo expressionInfo, XmlNode node)
        {
            foreach (var vuln in expressionInfo.ExpressionTaint.XssTaint.Where(taint => taint.TaintTag != XSSTaint.None))
            {
                string varName = (vuln.InitialTaintedVariable ?? "???");
                string message = "XSS vulnerability found on variable: " + varName +
                                 " on line: " + AstNode.GetStartLine(node) + " in file: " + _analysisStacks.IncludeStack.Peek();
                _vulnerabilityStorage.AddVulnerability(new VulnerabilityInfo()
                                                       {
                                                           Message = message,
                                                           IncludeStack = _analysisStacks.IncludeStack.ToImmutableStack(),
                                                           CallStack = _analysisStacks.CallStack.ToImmutableStack()
                                                       });
            }
            if (expressionInfo.ValueInfo.PossibleStoredTaint == null)
            {
                return;
            }

            var xssTaintSets = expressionInfo.ValueInfo.PossibleStoredTaint.Taint.XssTaint;
            foreach (var possibleVuln in xssTaintSets.Where(taint => taint.TaintTag != XSSTaint.None))
            {
                string varName = possibleVuln.InitialTaintedVariable ?? "???";
                var vulnMessage = "Tainted outgoing reaches sensitive sink: {0} on line: {1} in file: {2}";
                string message = string.Format(vulnMessage, varName, AstNode.GetStartLine(node), _analysisStacks.IncludeStack.Peek());
                var vulnInfo = new StoredVulnerabilityInfo()
                               {
                                   Message = message,
                                   PossibleStoredVuln = expressionInfo.ValueInfo.PossibleStoredTaint,
                                   IncludeStack = _analysisStacks.IncludeStack.ToImmutableStack(),
                                   CallStack = _analysisStacks.CallStack.ToImmutableStack(),
                                   VulnerabilityType = VulnType.XSS
                               };
                _vulnerabilityStorage.AddPossibleStoredVulnerability(vulnInfo);
            }
        }