Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. .NET (Core and Framework)
  4. Plugins for Application

Plugins for Application

Scheduled Pinned Locked Moved .NET (Core and Framework)
questionsysadminsecurityhelp
27 Posts 7 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • X Offline
    X Offline
    Xmen Real
    wrote on last edited by
    #1

    I'm trying to have plugin functionality in my application. So first thing came in mind was to just load the DLLs and call the common abstract class methods. After completing all that, I noticed that there could be many security issues. The next thing I used was different AppDomain. But that solve half of problem. Assume this, if a plugin wants to connect a server over internet, the firewall will show the name of my application and user may allow without knowing its the plugin who is trying to connect. After that I started using NamedPipeStream, separated them in processes, connected plugins and application through PipeStream, it does exactly what I needed but each plugins means a different process. Even everything is working fine but its not satisfying, something still feels not so good. My question is, is that the only way ? PS : I just want simple plugin support, not some complicated library like System.AddIn.

    TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L %^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2 W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN% R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-i’TV.C\y<pŠjxsg-b$f4ia>

    ----------------------------------------------- 128 bit encrypted signature, crack if you can

    realJSOPR N J 3 Replies Last reply
    0
    • X Xmen Real

      I'm trying to have plugin functionality in my application. So first thing came in mind was to just load the DLLs and call the common abstract class methods. After completing all that, I noticed that there could be many security issues. The next thing I used was different AppDomain. But that solve half of problem. Assume this, if a plugin wants to connect a server over internet, the firewall will show the name of my application and user may allow without knowing its the plugin who is trying to connect. After that I started using NamedPipeStream, separated them in processes, connected plugins and application through PipeStream, it does exactly what I needed but each plugins means a different process. Even everything is working fine but its not satisfying, something still feels not so good. My question is, is that the only way ? PS : I just want simple plugin support, not some complicated library like System.AddIn.

      TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L %^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2 W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN% R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-i’TV.C\y<pŠjxsg-b$f4ia>

      ----------------------------------------------- 128 bit encrypted signature, crack if you can

      realJSOPR Offline
      realJSOPR Offline
      realJSOP
      wrote on last edited by
      #2

      Simple for you may be altogether different for someone else. I googled "C# plugin framework" and got 17 million hits back, and on the first page, I found this: http://madskristensen.net/post/Generic-plug-in-application-in-C.aspx[^]

      ".45 ACP - because shooting twice is just silly" - JSOP, 2010
      -----
      You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010
      -----
      "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass." - Dale Earnhardt, 1997

      X 1 Reply Last reply
      0
      • realJSOPR realJSOP

        Simple for you may be altogether different for someone else. I googled "C# plugin framework" and got 17 million hits back, and on the first page, I found this: http://madskristensen.net/post/Generic-plug-in-application-in-C.aspx[^]

        ".45 ACP - because shooting twice is just silly" - JSOP, 2010
        -----
        You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010
        -----
        "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass." - Dale Earnhardt, 1997

        X Offline
        X Offline
        Xmen Real
        wrote on last edited by
        #3

        John Simmons / outlaw programmer wrote:

        I googled "C# plugin framework" and got 17 million hits back

        and you just read my message title not the content :)

        TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L %^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2 W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN% R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-i’TV.C\y<pŠjxsg-b$f4ia>

        ----------------------------------------------- 128 bit encrypted signature, crack if you can

        N 1 Reply Last reply
        0
        • X Xmen Real

          I'm trying to have plugin functionality in my application. So first thing came in mind was to just load the DLLs and call the common abstract class methods. After completing all that, I noticed that there could be many security issues. The next thing I used was different AppDomain. But that solve half of problem. Assume this, if a plugin wants to connect a server over internet, the firewall will show the name of my application and user may allow without knowing its the plugin who is trying to connect. After that I started using NamedPipeStream, separated them in processes, connected plugins and application through PipeStream, it does exactly what I needed but each plugins means a different process. Even everything is working fine but its not satisfying, something still feels not so good. My question is, is that the only way ? PS : I just want simple plugin support, not some complicated library like System.AddIn.

          TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L %^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2 W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN% R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-i’TV.C\y<pŠjxsg-b$f4ia>

          ----------------------------------------------- 128 bit encrypted signature, crack if you can

          N Offline
          N Offline
          Not Active
          wrote on last edited by
          #4

          Have you looked at MEF[^]


          I know the language. I've read a book. - _Madmatt

          P 1 Reply Last reply
          0
          • X Xmen Real

            John Simmons / outlaw programmer wrote:

            I googled "C# plugin framework" and got 17 million hits back

            and you just read my message title not the content :)

            TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L %^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2 W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN% R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-i’TV.C\y<pŠjxsg-b$f4ia>

            ----------------------------------------------- 128 bit encrypted signature, crack if you can

            N Offline
            N Offline
            Not Active
            wrote on last edited by
            #5

            He was responding to your statement "I just want simple plugin support..."


            I know the language. I've read a book. - _Madmatt

            X 1 Reply Last reply
            0
            • N Not Active

              He was responding to your statement "I just want simple plugin support..."


              I know the language. I've read a book. - _Madmatt

              X Offline
              X Offline
              Xmen Real
              wrote on last edited by
              #6

              Nice reason to vote 1, did you also forgot to remember I wrote that in first place "My question is, is that the only way ?" do I have to make it in big font, so you can see ?

              TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L %^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2 W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN% R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-i’TV.C\y<pŠjxsg-b$f4ia>

              ----------------------------------------------- 128 bit encrypted signature, crack if you can

              N 1 Reply Last reply
              0
              • X Xmen Real

                Nice reason to vote 1, did you also forgot to remember I wrote that in first place "My question is, is that the only way ?" do I have to make it in big font, so you can see ?

                TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L %^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2 W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN% R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-i’TV.C\y<pŠjxsg-b$f4ia>

                ----------------------------------------------- 128 bit encrypted signature, crack if you can

                N Offline
                N Offline
                Not Active
                wrote on last edited by
                #7

                Xmen W.K. wrote:

                do I have to make it in big font, so you can see ?

                Nice attitude. Good luck with getting anyone to help you now.


                I know the language. I've read a book. - _Madmatt

                1 Reply Last reply
                0
                • N Not Active

                  Have you looked at MEF[^]


                  I know the language. I've read a book. - _Madmatt

                  P Offline
                  P Offline
                  Pete OHanlon
                  wrote on last edited by
                  #8

                  I'm not sure why this was downvoted. MEF was going to be my recommendation as well.

                  Forgive your enemies - it messes with their heads

                  My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility

                  N X 2 Replies Last reply
                  0
                  • P Pete OHanlon

                    I'm not sure why this was downvoted. MEF was going to be my recommendation as well.

                    Forgive your enemies - it messes with their heads

                    My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility

                    N Offline
                    N Offline
                    Not Active
                    wrote on last edited by
                    #9

                    Pete O'Hanlon wrote:

                    I'm not sure why this was downvoted.

                    Simple retaliation. Read the other responses, the OP is being an a$$.


                    I know the language. I've read a book. - _Madmatt

                    1 Reply Last reply
                    0
                    • P Pete OHanlon

                      I'm not sure why this was downvoted. MEF was going to be my recommendation as well.

                      Forgive your enemies - it messes with their heads

                      My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility

                      X Offline
                      X Offline
                      Xmen Real
                      wrote on last edited by
                      #10

                      Pete O'Hanlon wrote:

                      I'm not sure why this was downvoted.

                      That guy need to learn bit respect, voted me down for nothing.

                      Pete O'Hanlon wrote:

                      MEF was going to be my recommendation as well.

                      yes I know but MEF is not really what I was needed. The following is from my post Assume this, if a plugin wants to connect a server over internet, the firewall will show the name of my application and user may allow without knowing its the plugin who is trying to connect.

                      TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L %^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2 W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN% R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-i’TV.C\y<pŠjxsg-b$f4ia>

                      ----------------------------------------------- 128 bit encrypted signature, crack if you can

                      D P 2 Replies Last reply
                      0
                      • X Xmen Real

                        Pete O'Hanlon wrote:

                        I'm not sure why this was downvoted.

                        That guy need to learn bit respect, voted me down for nothing.

                        Pete O'Hanlon wrote:

                        MEF was going to be my recommendation as well.

                        yes I know but MEF is not really what I was needed. The following is from my post Assume this, if a plugin wants to connect a server over internet, the firewall will show the name of my application and user may allow without knowing its the plugin who is trying to connect.

                        TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L %^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2 W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN% R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-i’TV.C\y<pŠjxsg-b$f4ia>

                        ----------------------------------------------- 128 bit encrypted signature, crack if you can

                        D Offline
                        D Offline
                        Dave Kreskowiak
                        wrote on last edited by
                        #11

                        Xmen W.K. wrote:

                        That guy need to learn bit respect, voted me down for nothing.

                        It's not Mark that needs to learn a bit of respect, and it's wasn't he that downvoted you...

                        Xmen W.K. wrote:

                        Assume this, if a plugin wants to connect a server over internet, the firewall will show the name of my application and user may allow without knowing its the plugin who is trying to connect.

                        DLL's don't get a process name. DLL's are loaded into the host .EXE process just as if it was part of the .EXE itself. There is no distinction between the .DLL code and the .EXE code, so any code in your .DLL that goes through the firewall is going to appear to the firewall as coming from the .EXE. The only way I see to getting around this would be to host your .DLL's in a seperate .EXE process and use interprocess communication methods to talk between the two. But, considering the requirement, that's adding a LOT of weight and overhead to your application for very little to no benefit.

                        A guide to posting questions on CodeProject[^]
                        Dave Kreskowiak

                        X 1 Reply Last reply
                        0
                        • X Xmen Real

                          Pete O'Hanlon wrote:

                          I'm not sure why this was downvoted.

                          That guy need to learn bit respect, voted me down for nothing.

                          Pete O'Hanlon wrote:

                          MEF was going to be my recommendation as well.

                          yes I know but MEF is not really what I was needed. The following is from my post Assume this, if a plugin wants to connect a server over internet, the firewall will show the name of my application and user may allow without knowing its the plugin who is trying to connect.

                          TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L %^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2 W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN% R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-i’TV.C\y<pŠjxsg-b$f4ia>

                          ----------------------------------------------- 128 bit encrypted signature, crack if you can

                          P Offline
                          P Offline
                          Pete OHanlon
                          wrote on last edited by
                          #12

                          Xmen W.K. wrote:

                          That guy need to learn bit respect, voted me down for nothing.

                          Revenge univoting is not teaching somebody respect. It's just childish. It is the forum equivalent of "Did-to, Did-not" that children engage in.

                          Forgive your enemies - it messes with their heads

                          My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility

                          1 Reply Last reply
                          0
                          • D Dave Kreskowiak

                            Xmen W.K. wrote:

                            That guy need to learn bit respect, voted me down for nothing.

                            It's not Mark that needs to learn a bit of respect, and it's wasn't he that downvoted you...

                            Xmen W.K. wrote:

                            Assume this, if a plugin wants to connect a server over internet, the firewall will show the name of my application and user may allow without knowing its the plugin who is trying to connect.

                            DLL's don't get a process name. DLL's are loaded into the host .EXE process just as if it was part of the .EXE itself. There is no distinction between the .DLL code and the .EXE code, so any code in your .DLL that goes through the firewall is going to appear to the firewall as coming from the .EXE. The only way I see to getting around this would be to host your .DLL's in a seperate .EXE process and use interprocess communication methods to talk between the two. But, considering the requirement, that's adding a LOT of weight and overhead to your application for very little to no benefit.

                            A guide to posting questions on CodeProject[^]
                            Dave Kreskowiak

                            X Offline
                            X Offline
                            Xmen Real
                            wrote on last edited by
                            #13

                            Dave Kreskowiak wrote:

                            The only way I see to getting around this would be to host your .DLL's in a seperate .EXE process and use interprocess communication methods to talk between the two. But, considering the requirement, that's adding a LOT of weight and overhead to your application for very little to no benefit.

                            Thats what I asked, if you have read my question. But there is benefit, the spyware kind of plugins will always be separated and end user will be responsible for anything goes wrong, not the host application.

                            TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L %^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2 W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN% R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-i’TV.C\y<pŠjxsg-b$f4ia>

                            ----------------------------------------------- 128 bit encrypted signature, crack if you can

                            D 1 Reply Last reply
                            0
                            • X Xmen Real

                              Dave Kreskowiak wrote:

                              The only way I see to getting around this would be to host your .DLL's in a seperate .EXE process and use interprocess communication methods to talk between the two. But, considering the requirement, that's adding a LOT of weight and overhead to your application for very little to no benefit.

                              Thats what I asked, if you have read my question. But there is benefit, the spyware kind of plugins will always be separated and end user will be responsible for anything goes wrong, not the host application.

                              TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L %^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2 W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN% R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-i’TV.C\y<pŠjxsg-b$f4ia>

                              ----------------------------------------------- 128 bit encrypted signature, crack if you can

                              D Offline
                              D Offline
                              Dave Kreskowiak
                              wrote on last edited by
                              #14

                              The end-user is going to be accountable for it no matter which executable runs the thing! If the app name comes back a normal production app, then they can just look at the plugins and see that something here isn't quite like the others. I think you're inflating the usefulness of this idea.

                              A guide to posting questions on CodeProject[^]
                              Dave Kreskowiak

                              X 1 Reply Last reply
                              0
                              • D Dave Kreskowiak

                                The end-user is going to be accountable for it no matter which executable runs the thing! If the app name comes back a normal production app, then they can just look at the plugins and see that something here isn't quite like the others. I think you're inflating the usefulness of this idea.

                                A guide to posting questions on CodeProject[^]
                                Dave Kreskowiak

                                X Offline
                                X Offline
                                Xmen Real
                                wrote on last edited by
                                #15

                                Dave Kreskowiak wrote:

                                I think you're inflating the usefulness of this idea.

                                I'm just trying to make application more separated as much as possible. I used PipeStream to communicate between processes as I wrote above...the question was simple, is that the only way ? but some people were in too hurry to read that. Anyway thanks for the reply :)

                                TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L %^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2 W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN% R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-i’TV.C\y<pŠjxsg-b$f4ia>

                                ----------------------------------------------- 128 bit encrypted signature, crack if you can

                                P 1 Reply Last reply
                                0
                                • X Xmen Real

                                  Dave Kreskowiak wrote:

                                  I think you're inflating the usefulness of this idea.

                                  I'm just trying to make application more separated as much as possible. I used PipeStream to communicate between processes as I wrote above...the question was simple, is that the only way ? but some people were in too hurry to read that. Anyway thanks for the reply :)

                                  TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L %^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2 W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN% R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-i’TV.C\y<pŠjxsg-b$f4ia>

                                  ----------------------------------------------- 128 bit encrypted signature, crack if you can

                                  P Offline
                                  P Offline
                                  Pete OHanlon
                                  wrote on last edited by
                                  #16

                                  I didn't misread it. I just thought it was a daft idea. Marshalling backwards and forwards of data could end up beinga a fairly expensive business.

                                  Forgive your enemies - it messes with their heads

                                  My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility

                                  X 1 Reply Last reply
                                  0
                                  • P Pete OHanlon

                                    I didn't misread it. I just thought it was a daft idea. Marshalling backwards and forwards of data could end up beinga a fairly expensive business.

                                    Forgive your enemies - it messes with their heads

                                    My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility

                                    X Offline
                                    X Offline
                                    Xmen Real
                                    wrote on last edited by
                                    #17

                                    Sending/Receiving data through pipe is a daft idea ?

                                    TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L %^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2 W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN% R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-i’TV.C\y<pŠjxsg-b$f4ia>

                                    ----------------------------------------------- 128 bit encrypted signature, crack if you can

                                    P 1 Reply Last reply
                                    0
                                    • X Xmen Real

                                      Sending/Receiving data through pipe is a daft idea ?

                                      TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L %^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2 W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN% R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-i’TV.C\y<pŠjxsg-b$f4ia>

                                      ----------------------------------------------- 128 bit encrypted signature, crack if you can

                                      P Offline
                                      P Offline
                                      Pete OHanlon
                                      wrote on last edited by
                                      #18

                                      No - the effort you'll expend creating an overengineered plug-in framework is the daft idea.

                                      Forgive your enemies - it messes with their heads

                                      My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility

                                      X 1 Reply Last reply
                                      0
                                      • X Xmen Real

                                        I'm trying to have plugin functionality in my application. So first thing came in mind was to just load the DLLs and call the common abstract class methods. After completing all that, I noticed that there could be many security issues. The next thing I used was different AppDomain. But that solve half of problem. Assume this, if a plugin wants to connect a server over internet, the firewall will show the name of my application and user may allow without knowing its the plugin who is trying to connect. After that I started using NamedPipeStream, separated them in processes, connected plugins and application through PipeStream, it does exactly what I needed but each plugins means a different process. Even everything is working fine but its not satisfying, something still feels not so good. My question is, is that the only way ? PS : I just want simple plugin support, not some complicated library like System.AddIn.

                                        TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L %^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2 W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN% R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-i’TV.C\y<pŠjxsg-b$f4ia>

                                        ----------------------------------------------- 128 bit encrypted signature, crack if you can

                                        J Offline
                                        J Offline
                                        jschell
                                        wrote on last edited by
                                        #19

                                        Xmen W.K. wrote:

                                        So first thing came in mind was to just load the DLLs and call the common abstract class methods. After completing all that, I noticed that there could be many security issues.

                                        Such as what exactly? The only security concern that I specifically see with the above description is that you might need to verify that the loaded dlls hasn't been hacked (signature verification.)

                                        Xmen W.K. wrote:

                                        Assume this, if a plugin wants to connect a server over internet, the firewall will show the name of my application and user may allow without knowing its the plugin who is trying to connect.

                                        At some point you have to trust the plugin. For instance consider the situation I mentioned above where someone has maliciously replaced the real plugin with one that has the same name and same functionality but which transmits all of the data to a third party.

                                        Xmen W.K. wrote:

                                        My question is, is that the only way ?

                                        First step is to identify what your actual security requirements are. As an example if you want the user to validate the plugins then you should insure that your application will not load any plugin unless the user has verified it and has done that in the application.

                                        X 1 Reply Last reply
                                        0
                                        • J jschell

                                          Xmen W.K. wrote:

                                          So first thing came in mind was to just load the DLLs and call the common abstract class methods. After completing all that, I noticed that there could be many security issues.

                                          Such as what exactly? The only security concern that I specifically see with the above description is that you might need to verify that the loaded dlls hasn't been hacked (signature verification.)

                                          Xmen W.K. wrote:

                                          Assume this, if a plugin wants to connect a server over internet, the firewall will show the name of my application and user may allow without knowing its the plugin who is trying to connect.

                                          At some point you have to trust the plugin. For instance consider the situation I mentioned above where someone has maliciously replaced the real plugin with one that has the same name and same functionality but which transmits all of the data to a third party.

                                          Xmen W.K. wrote:

                                          My question is, is that the only way ?

                                          First step is to identify what your actual security requirements are. As an example if you want the user to validate the plugins then you should insure that your application will not load any plugin unless the user has verified it and has done that in the application.

                                          X Offline
                                          X Offline
                                          Xmen Real
                                          wrote on last edited by
                                          #20

                                          jschell wrote:

                                          At some point you have to trust the plugin. For instance consider the situation

                                          There is no trust on plugins, if I trust, host application will lose the trust and it will be in firewall block list. And that will ruin entire point of stats management and other important things.

                                          jschell wrote:

                                          As an example if you want the user to validate the plugins then you should insure that your application will not load any plugin unless the user has verified it and has done that in the application.

                                          Well, thats the problem. A user can validate any plugin, regular user has no knowledge whats going on behind the application. Even a programmer, will have read all the source code to make sure the plugin is not a spyware or virus, that may steal their work or documents. Here is more detailed explanation - Host Application uses web service, sends and receives informations, update stats. - User trusts on host application. - Everyone in the entire world is allowed to create own plugin - But if host application loads plugin even in separate AppDomain, it still uses same firewall setting, which is already allowed by user, and plugin has direct access to internet. - Only way I see is separate process for each plugin. So if plugin tries to connect, firewall will confirm that. - My question was that, is separate process only way to avoid that ? thats it, thats it, nothing more than that.

                                          TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L %^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2 W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN% R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-i’TV.C\y<pŠjxsg-b$f4ia>

                                          ----------------------------------------------- 128 bit encrypted signature, crack if you can

                                          L 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups