button unsichtbar machen "sicher"?



  • Hallo,

    angenommen ich habe eine Windows Form mit diversen buttons. Per bedingter Kompilierung mache ich momentan ein paar dieser buttons unsichtbar, da der Benutzer dann diese nicht anwählen/sehen/benutzen darf.

    Das mache ich mittels:

    #if RESTRICTED_USER_VERSION
    adminButton.Visible = false;
    #endif
    

    Jetzt meine Frage, ist diese Methode sicher? Also ist damit sichergestellt dass der Benutzer keine Möglichkeit hat den jeweiligen Button zu aktivieren?



  • Nein, man kann die GUI ganz einfach von außen editieren und so die Buttons sichtbar machen (z.B. damit http://www.codeproject.com/Articles/4814/A-simple-Windows-forms-properties-spy)



  • Ok, was wäre dann eine sichere Methode? Zusätzlich noch control.Enabled = false; setzen? Oder kann das auch von außen editiert werden?



  • #if RESTRICTED_USER_VERSION
    return;
    #endif
    


  • Ja, auch das kann verändert werden. Kannst du nicht einfach den Button entweder per Code erzeugen (und diesen Code dann mittels bedingter Kompilierung versehen) oder aber entferne den Button wieder aus der Controls-Collection?

    Controls.Remove(adminButton);
    


  • Mach zusätzlich zu dem von dir vorgeschlagenen invisible-Setzen folgendes:

    void OnAdminButtonClicked(...)
    {
    #if !RESTRICTED_USER_VERSION
        // All the code that does stuff which we don't want in the restricted version
    #endif
    }
    

    @Th69
    In einem Release-Build sollte auch bei der Variante von KN4CK3R kein Code mehr hinter dem return; übrigbleiben. Is ja nicht so dass der C# Compiler gar nix optimieren würde.

    Ansonsten, darf ich deinen Beitrag mal "out of order" zitieren?

    Th69 schrieb:

    Kannst du nicht einfach den Button entweder per Code erzeugen (und diesen Code dann mittels bedingter Kompilierung versehen) oder aber entferne den Button wieder aus der Controls-Collection?

    Controls.Remove(adminButton);
    

    Th69 schrieb:

    Ja, auch das kann verändert werden.



  • Mein Beitrag bezog sich nur auf den von happystudent, nicht auf den von KN4CK3R (ich erkenne aber auch keinen Sinn in seinem Beitrag) - ich war nur zu langsam beim antworten.

    @hustbaer: ich bezog mich nur auf das Sichern gegen den im verlinkten Artikel bzgl. 'wfspy' (dort sieht man ja auch gleich im Screenshot, daß 'Enabled' verändert werden kann).



  • Das Return sorgt in der restriktiven Version dafür, dass die Funktion gleich wieder verlassen wird. Wie hustbear schon gesagt hat, sollte außerdem der nachfolgende Code automatisch wegoptimiert werden.



  • Ok danke schonmal, hatte etwas der Art befürchtet 😃

    Weil dann muss der Code erstmal entsprechend umstrukturiert werden damit das geht bei mir, wird es dann aber wohl auch wert sein...


Anmelden zum Antworten