Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Craze89
Thema: [gelöst] asp.net MVC Inline code wird als XSS-Attacke erkannt
Am im Forum: Web-Technologien

Aber sichi das! :D

Ich finde leider grad auf anhieb die Seite nicht mehr wo ichs gefunden habe, also gibts hier mal nur den code dazu.

Diese Methode erwartet also einen PartialView und das zugehörige ViewModel, aber anstatt diese zu rendern, wird der View einfach in den StringBuilder geschrieben.


public static string RenderPartialToString(string controlName, object viewData)
        {
            ViewPage viewPage = new ViewPage() { ViewContext = new ViewContext() };

            viewPage.ViewData = new ViewDataDictionary(viewData);
            viewPage.Controls.Add(viewPage.LoadControl(controlName));

            StringBuilder sb = new StringBuilder();
            using (StringWriter sw = new StringWriter(sb))
            {
                using (HtmlTextWriter tw = new HtmlTextWriter(sw))
                {
                    viewPage.RenderControl(tw);
                }
            }

            return sb.ToString();
        }

Zu beachten ist, das man ggf. zusätzlich noch enthaltene CSS-classes durch styles ersetzen, oder die stylesheets anhängen muss. Außerdem sollte man die "\r"s und "\n"s entfernen.

Gruß
Craze

Thema: [gelöst] asp.net MVC Inline code wird als XSS-Attacke erkannt
Am im Forum: Web-Technologien

Das mach ich im Normalfall auch nicht. Ich erstelle halt anhand von berechneten (teilweise flüchtigen) Daten eine Tabelle im View. Der Kunde hätte diese Tabelle aber gerne auch in der Mail, die er am Ende des Workflows kriegt.

Hab das Problem jetzt aber auch gelöst, habe im Netz ein recht nützliches Snippet gefunden mit dem man PartialViews als String "rendern" kann. Sprich ich render einmal den View + Partial mit den gegebenen Daten und einmal "render" ich den String des PartialViews, der dann in der Mail landet.

MfG
Craze

Thema: [gelöst] asp.net MVC Inline code wird als XSS-Attacke erkannt
Am im Forum: Web-Technologien

Die Variante C hört sich doch sehr gut an (hätte ich auch selbst drauf kommen können :D).

Und selbst die Varianten A und B sind besser, als alles was ich so über google gefunden haben. Da hieß es immer nur "stell die Validation in der Config aus" (so nach dem motto), was ja noch viel schlimmer ist.

Ich werds also erstmal mit deiner Variante C probieren und wenn mir das dann doch noch zu unsicher ist, werde ich das HTML für die Tabelle einfach serverseitig erzeugen und an den View zum Rendern übergeben.
Das wäre vermutlich die sicherste Variante oder?

Besten Dank für die Tipps!

MfG
Craze

Thema: [gelöst] asp.net MVC Inline code wird als XSS-Attacke erkannt
Am im Forum: Web-Technologien

Hallo Community,

ich habe da ein Problem mit einem inline Script in einer asp.net (MVC) Application.
Hintergrund für dieses inline Script ist, das eine dynamisch erstellte Tabelle des Views später auch in einer e-Mail verschickt werden soll.

Ich mache also folgendes:

Ich lege ein HiddenField für ein Property aus dem Viewmodel an


<%= Html.HiddenFor(x => x.exampleTable) %>

Beim document.ready lese ich das InnerHTML der Tabelle aus und schreibe dieses HTML in das Model

<script type="text/javascript">
    $(document).ready(function () {
        var innerHtml = document.getElementById("exampleTableId").innerHTML;
        $('#exampleTable').val(innerHtml);
    });
</script>

Wie bereits erwähnt, wird dieses Script als potentiell gefährlicher Code (mögliches Cross Site Scripting) erkannt. Habt ihr eine Idee, wie ich das ganze auch auf einem sicheren Weg machen kann, oder wie ich MVC mitteile, das dieses Script so gewünscht ist?

MfG
Craze

Thema: Clientside Validation - DataAnnotations (Range)
Am im Forum: Web-Technologien

Ich hab den Fehler anscheinend gefunden und bin nur froh, das er so wie es aussieht nicht bei mir lag...

Anscheinend hat das Range-Attribute ein Problem mit der clientseitigen validierung, wesshalb ich mir einfach ein eigenes RangeValueAttribute geschrieben habe. Dazu dann die nötige neue Methode an den JQuery.Validate.Validator angehängt - und schon hats funktioniert!

Der Vollständigkeit wegen hier noch kurz der Code...

Das Attribute selbst:


[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
    public class RangeValueAttribute : ValidationAttribute
    {
        private readonly int minValue;
        private readonly int maxValue;
        
        public RangeValueAttribute(int minimum, int maximum) {
            minValue = minimum;
            maxValue = maximum;
        }

        public override bool IsValid(object value)
        {
            try
            {
                int valueAsInt = Convert.ToInt32(value);

                if (valueAsInt ≥ minValue && valueAsInt ≤ maxValue)
                {
                    return true;
                }
                return false;
            }
            catch (Exception)
            {
                return false;
            }
        }
    }

und der Code zum Anfügen der Methode an den Validator:


<script type="text/javascript">
$.validator.addMethod("rangevalue", function (value, element, param) {
        var minValue = "<%=Model.MinValue %>";
        var maxValue = "<%=Model.MaxValue %>";

        if (value > maxValue || value < minValue) {
            return false;
        }

        return true;
    })
</script>

MfG
Craze

Thema: Clientside Validation - DataAnnotations (Range)
Am im Forum: Web-Technologien

Hallo Community!

Ich hab da ein kleines Problem beim erstellen einer clientseitigen Validierung per DataAnnotations.
Ich habe ein Propperty, das mit zwei Attributen zur Validierung versehen ist.


[ExampleValidation]
    public class ExampleViewModel : NavigateToIndexViewModel
    {
        [Required(ErrorMessageResourceName = "Erforderlich_Hoehe", ErrorMessageResourceType = typeof(StringResources_WebAd3Web))]
        [Range(0, 440, ErrorMessageResourceName = "HoeheZuGross", ErrorMessageResourceType = typeof(StringResources_WebAd3Web))]
        public int HoeheInMM { get; set; }

und eine Methode, die mir die angegebenen Validationrules für das Model übergibt:


public ActionResult ExampleValidationRules() {
            var script = new StringBuilder();

            (from t in GetType().Assembly.GetTypes()
             where t.GetCustomAttributes(typeof(ExampleValidationAttribute), false).Count() > 0
             select t).ForEach(t =>
             {
                 ValidationVariableFor(t, script, RulesBezeichner, Rules);
                 ValidationVariableFor(t, script, MessagesBezeichner, ErrorMessages);
             });

            return JavaScript(script.ToString());
        }

der View sieht etwa wie foltg aus:


...
<%=Html.JjkJavaScript("~/Content/js/jquery.validate.js")%>
<script type="text/javascript" src="<%=Url.Action<ResourceController>(x=>x.ExampleValidationRules()) %>"></script>

<% using(Html.BeginForm<ExampleController>(x => x.Index(), FormMethod.Post, new {Id = Names.FormExample})) {%>

<div id="errors">
    <ul id="ExampleMessageBox"></ul>
</div>

<%= Html.TextBoxFor(x => x.HoeheInMM, new { style = "width:110px;" })%>
<%= Html.ValidationMessageFor(x => x.HoeheInMM) %>
<% } %> 

     <script type="text/javascript">
        $(document).ready(function () {
            $("#<%=Names.FormExample%>").validate({
                rules: ExampleViewModelRules,
                messages: ExampleViewModelMessages,
                errorLabelContainer: "#ExampleMessageBox",
                wrapper: "li"
            });
        });
    </script> 
...

Ich habe hier natürlich nur die wichtigen Parts abgebildet (könnte also sein, das ich den ein oder anderen syntaxfehler oder Fehlbenennungen übersehen hab - das ist im realen code allerdings nicht der fall).

Jetzt aber mal zum eigentlich Fehler.
Das Required-Attribute tut seinen Dienst, und zeigt eine Fehlermeldung an, wenn das entsprechende Textfeld leer ist - das erste Attribute funktioniert also einwandfrei.
Das Range-Attribute hingegen bereitet mir einige Kopfschmerzen, denn obwohl eine Range von 0 bis 440 angegeben ist, scheint diese Validierung nicht zu greifen - egal was ich eingebe, die Eingabe wird immer als nicht valid angesehen - negative Werte, Werte > 440, aber auch Werte die im Erlaubten bereich liegen, veranlassen, das die Fehlermeldung angezeigt wird.

Hat villeicht irgendwer eine Idee, woran das liegen könnte?

Danke schonmal für eure Hilfe!

MfG
Craze

//Edit\\
Kleine Ergänzung zur Umgebung:
Visualstudio 2010
.Net Framework 4
Asp.NET MVC 3

Thema: [MVC] was bedeutet ein @ beim Modelbinding?
Am im Forum: Web-Technologien

Danke für die schnelle Antwort. Das ist ja mal echt praktisch. Schade nur, das das so schwer herauszufinden ist, wenn man nicht gerad in einem Board wie myC# unterwegs ist, denn google hat mir da mal so garnicht helfen können :)

Thema: [MVC] was bedeutet ein @ beim Modelbinding?
Am im Forum: Web-Technologien

Hallo Communtiy,

ich beschäftige mich atm ein wenig mit dem Modelbinding bei MVC anwendungen und bei der recherche bin ich auf folgenden Beitrag bei Stack Overflow gestoßen:
Modelbinding with disbaled Textbx
Ich frage mich jetzt allerdings, was das "@" in diesem Codeausschnitt zu bedeuten hat.

danke & liebe grüße
Craze

Thema: VS2010 Conversion Wizard manuell starten
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo Community,

ich würde gerne ein MVC1 projekt zu MVC2 konvertieren und ich weis, das es in VS2010 einen Wizard dafür gibt, der normalerweise beim ersten öffnen einer Solution gestartet wird. Wir haben allerdings beim umstieg auf VS2010 vorerst darauf verzichtet auch auf MVC2 umzusteigen und wollen das jetzt nachholen, doch leider konnte ich bis jetzt noch nicht rausfinden, wie ich diesen Wizard manuell starten kann, nachdem er für dieses Projekt bereits einmal abgelehnt wurde.
Ich wäre euch sehr dankbar, wenn mir jemand verraten kann, wie das ganze funktioniert.

MfG
Craze

Thema: Resharper ruckelt
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

wenn der resharper läuft und das "geruckel" immer schlimmer wird, auch mal öfters den genutzen arbeitsspeicher vom resharper prüfen. es gibt einen bug im resharper, der bei manchen auftritt, der das leeren des RAM verhindert. Ich weis nicht, ob der mittlerweile gefixt ist, aber er tritt auch echt selten auf. bei uns der firma hatte den von ~30 leuten die den resharper nutzen genau einer und hat sich dann mal da an den support gewandt und einige tipps bekommen, kann aber gerade nicht genau sagen woran es lag.

Thema: Methode wird bei Variable aufgerufen? o.O [Help pls]
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Razzernp,

das sind grundlagen, die vorhande sein sollten (siehe dazu FAQ links im hauptmenü).

Aber trozdem eine kurze erklärung, was da passiert.

Du weißt den variablen in der Main-Methode jeweils eine Methode zu und wenn eine methode einer variablen zugewiesen wird, wird diese methode ausgeführt und dann der returnvalue der methode in die variable übernommen. Das ganze hat also schon seine richtigkeit, so wie es da passiert.

zur einführung kann ich dir das openbook C# empfehlen, steht ebenfalls links im menü unter dem punkt "Ressourcen"

MfG
Craze

Thema: Was als Ersatz für TStringList (Delphi) in C# verwenden?
Am im Forum: Rund um die Programmierung

Du solltest dir aufjendefall mal das openbook C# anschaune. findest du links im hauptmenü unter dem Punkt Ressourcen.

Das sind Grundlagen, und die werden hier vorrausgesetzt.
Das wird dir warscheinlich gleich auch noch einer der Mods schreiben und dich auf die FAQ hinweise.

Thema: Frage zu Auflösung & Screenshoterstellung eines Fensters über Prozes
Am im Forum: GUI: Windows-Forms

auch hier gilt mal wieder ... google hilft

Screenshot - Active Window

Thema: Wie nennt sich dieses Trennlinien-Control?
Am im Forum: GUI: WPF und XAML

ich weis zwar nicht wie es in WPF heißt, aber ich kenns aus WinForms. Ist n ListBox, bei dem Gruppen angelegt wurden. Hoffe jetzt einfach mal, das das in WPF genauso ist :D

Thema: Visual Studio 2010 parallel zu 2008 installieren?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ja wie schon gesagt, geht ohne probleme. hab auch 2008 und 2010 (produktiv) parallel laufen auf nem Win7. Und mein Resharper geht auch super :), hab aber auch resharper 3.5 im VS08 und resharper 4.0 im VS10, vielleicht gehts ja nur kaputt, wenn beides die selbe version hat.

Thema: Welchen Clean Code Developer Grad habt ihr?
Am im Forum: Smalltalk

Dann bin ich eigentlich eine Mischung aus allen Graden. Habe seid es die Bändchen gibt welche (hab sie damals vom Stefan Lieser bekommen, als er noch nicht selbständig war und in der selben Firma gearbeitet hat wie ich). Ich kenne Regeln größtenteils auswendig, aber es ist hier schwer sich immer an alle zu halten, aber wenns geht wird natürlich alles so gut wie möglich umgesetzt.

so far
craze

Thema: Welchen Clean Code Developer Grad habt ihr?
Am im Forum: Smalltalk

Also ich hab momentan den Orangen, bin aber auch nicht wirklich so aktiv was CCD angeht. Ich versuch so oder so möglichst sauber zu coden.

Aber ich verstehe den Sinn der Umfrage absolut nicht, weil man wenn man einmal alle Grade durch hat eh wieder von vorne anfängt.

Thema: entwicklung mit Microsoft Visual Studio 2005 und 64 oder 32 bit
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

ja kann man. zumindest sofern das nicht erst ab 2008 geht.
unter Build -> ConfigurationManager kannst du für jede assembly einstellen einstellen, wie es gebuildet/realeased/debugt wird, also mit welcher Platform (x86 oder x64)

Thema: Wie lange warten nach abschicken einer Bewerbung
Am im Forum: Smalltalk

Ja das ganze kann durchaus schonmal einige Zeit dauern, als ich in meiner Bewerbungsphase war (vor ca. 2 jahren) hab ich auch gedacht das wird nie was, aber bei einer Firma hats dann vom versenden der Bewerbung bis zum Unterschreiben des Vertrags genau 7Tage gedauert(inkl. Wochende), wie man sieht kann sowas also auch schonma unerwartet schnell gehen.

Das lustigste war aber eine "Firma" (eigentlich das Amt einer Stadt in meiner Nähe), hat sich ein Jahr später (zur nächsten Bewerbungsphase) telefonisch bei mir gemeldet und gefragt, ob ich denn noch Interesse hätte XD

greetz
Craze

Thema: ASP.NET-Entwicklung im Team mit SVN
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Also so ganz hab ich die Frage nicht verstanden, aber ich versuch trozdem dir zu helfen.

-Du legst ein Projekt auf deinem SubVersion-Server an und lädst die erste version hoch
-Ein anderer aus dem Team checkt aus (läd runter)
-ändert was (und testet hoffentlich :))
-er commited die neue version (läd hoch)
-SVN merged die Dateien
-Die fertige- oder Testversion wird ausgecheckt und auf den Webserver geladen.

und fertig ists :D

ich hoffe jetzt nur, das ich mich grade nicht selbst blamiere, weil ich die frage einfach nicht gecheckt hab



btw.: Ihr sollt zu 4 ein ganzes Content Management System programmieren? na dann hf & gl :)

Thema: Ist das akzeptable GUI Trennung?
Am im Forum: Rund um die Programmierung

Also wenn man die GUI schon von allem anderen trennen will, dann sollte man meiner Meinung nach auch gleich auf bewährte Patterns wie MVP zurückgreifen.
Ich verstehe nicht, warum immer jeder das Rad neu erfinden muss.
Und zu MVP, MVVM, MVC gibt es mittlerweiel SOOOOOO viele tutorials und schwer zu verstehen und umzustzen ist es ja auch nicht.

Also warum versuchst dus nicht einfach damit?

MfG
Craze

Thema: Was hören .net Programmierer?
Am im Forum: Smalltalk

Hmm ich kann mich nicht so recht entscheiden XD

ich würd sagen: MONO & Nikitaman - Ausser Kontrolle

(aber grad lief Beat it von Fall out Boy und John Mayer, das lied is einfach auch der Hammer)

Thema: Meditative Audiospielerei Tone Matrix und Pulsate (Interaktive Flash-Anwendungen)
Am im Forum: Smalltalk

Erinnert mich irgendiwe an den Kaossilator und das ChaosPad von Kork :)

btw. der Kaossilator ist echtn geniales teil und auch nicht soo arg teuer. Hab ich immer beim Zug fahren dabei.

MfG
Craze

Thema: IPv6: Was tun, um ein Desaster zu verhindern?
Am im Forum: Smalltalk

Hallo ihr C#'ler,

der vergleich mit dem Jahr-2000-Problem ist garnicht mal so falsch. Man hat sich damals auch zu viel Zeit gelassen, die Probleme anzugehen und sie dann nur provisorisch behoben, das Problem trat nämlich einfach 10Jahre später auf. (Jaaaa genau 2000+10 = 2010 ;) ) Denn weil man sich damals so viel Zeit gelassen und es nicht richtig gemacht hat, habn Anfang 2010 die meisten Banken arge Probleme gehabt (ich denke die meisten erinnern sich noch an die Kreditkarten-Probleme). und desshalb muss ich Herbivore da zustimmen, es kann nicht früh genug angefangen werden sich darüber gedanken zu machen.

Gehen wir mal davon aus, das uns (erst) 2013 die IP's ausgehen und wir fangen 2012 an mit der Umstellung, was meint ihr wieviel Prozent aller Soft- und Hardware dann umgestellt sind, wenns so weit ist? Ich sage über 10% werden wir in einem Jahr niemals schaffen. Und dann sinds nicht nur ein paar arme Kreditkarten-Inhaber, die betroffen sind, sondern wir alle (außer vielleicht ein paar glückliche, bei denen zufällig alle Geräte in den 10% enthalten sind).

Ich für meinen Teil bin vorbereitet, ich hoffe nur das auch die Provider rechtzeitig so weit sind.

my 2 cents
Craze

Thema: rekursive Reflektion?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Das mit dem Basistypen ist so ne Sache. Du könntest ggf. auf SimpleType && String prüfen, das dürfte die meisten systemTypen erschlagen. Ich hab da mal was ähnliches gemacht, steht aach hier im Forum. Werds nachher mal raussuchen und rein editieren.

MfG
Craze


//Edit\\
Refelction Verschachtelung in Generischen Methoden

Das Teil ist leider nie fertig geworden, da das Projekt eingestampft wurde :(

Thema: TDD: Wie teste ich mein Datenrepository?
Am im Forum: Rund um die Programmierung

Also an der Datenstruktur scheitert das ganze nicht, weil wir wie gesagt die datenbank für jeden test aus den Mappings erstellen lassen, die DB für den Test ist also immer auf dem aktuellen stand (zusätzlich gibt es auch noch mapping-tests, aber die sind hier ja nicht das thema).
Das ist halt das problem beim script. Ändert sich die datenstruktur musst du auch das script wieder anpassen.

Problem beim stubben der DB-Klassen ist dann wiederrum, das du zwar testen kannst, ob dein Repository was in die DB schreibt, aber ob das ganze auch so gespeichert wird, wie es sein soll weißt du in dem falle leider nicht, da du die daten nicht 1 zu 1 wieder rausholen kannst

Thema: TDD: Wie teste ich mein Datenrepository?
Am im Forum: Rund um die Programmierung

hallo alx,

konkreten beispielcode darf ich dir leider nicht geben, aber bei uns in der firma machn wir folgendes.

Wir lassen uns einfach aus unseren Mappings (fluent Nhibernate und xml-Mappings) eine Datenbank erstellen (kann man natürlich auch per script machen, aber so ist halt schöner) und testen unsere Repositorys dann gegen diese Datenbank. Vorher haben wir das ganze mal mit SQLite probiert, das gab aber probleme, weil es sich in einigen belangen anders verhält als der "große" SQLServer und auch die 32 und 64 Bit-version dort nicht so 100% übereinstimmen.

schöne grüße
Craze

Thema: IP-Adressen aller Teilnehmer am gleichen Subnetz herausfinden
Am im Forum: Netzwerktechnologien

Oder man nimmt nen Diagnose-Switch (oder HUB mit diagnose port) und hängt das entsprechende Diagnosegerät dran :D

So spass bei Seite... auch wenn du es nicht gesagt hast, aber ich vermute ja mal fast, du hättest gerne n programm, dass das kann.

Also ich würde auch versuchen alle IPs anzupingen (außer NetzAdresse, Broadcast und deiner eigenen) und davon ausgehen, das bei allen die nicht responden entweder kein Gerät da ist, oder dieses ausgeschaltet ist. Wobei ich mir nicht sicher bin, ob Geräte wie Netzwerkdrucker o.ä. überhaupt darauf reagieren.

Und die Berechnung aller verfügbaren IPs in einem (Sub-)Netz ist ja jetzt auch nicht so wirklich schwer.
Übrigens gibts den Begriff Sub-Netzt afaik nicht mehr XD


Ein Broadcast hat afaik den nachteil, das manche router ein respond auf broadcasts als aufforderung verstehen die gesendete IP in ire ARP-Tabelle zu übernehmen.

Bitte korrigiert mich, wenn ich da falsch liege. Bin kein all zu großer Hardware-Spezi :D

MfG
Craze

Thema: [erledigt] Taschenrechner gesucht, der nicht programmierbar sein darf
Am im Forum: Smalltalk

Also den FX 991ES kannst du dir ohne bedenken kaufen.
Ich besitze den jetzt auch schon seid ein paar jahren und er hat mich noch nie im Stich gelassen :)

Und er ist definitiv für Prüfungen zugelassen (zumindest in NRW).


MfG
Craze

Thema: Seid ihr professionelle Entwickler?
Am im Forum: Smalltalk

Also ob ich ein professioneller Entwickler bin, möchte ich hier jetzt erstmal so dahingestellt lassen.

Aber ich bin ein (Semi-)Brötchenverdiener (Azubi halt).
Ich hab Fachabi mit dem Schwerpunkt IT gemacht und sofort nach der Schule in einer Softwareschmiede für Zeitungsverlage meine Ausbildung begonnen und bin mir sicher, das ich es nicht viel besser hätte treffen können.