Re: sn.exe -Vr assembly
From: Nicole Calinoiu (calinoiu)
Date: 01/21/05
- Next message: Joe: "Re: Determine what security permissions are needed"
- Previous message: Nicole Calinoiu: "Re: Determine what security permissions are needed"
- In reply to: Gecko: "Re: sn.exe -Vr assembly"
- Next in thread: Gecko: "Re: sn.exe -Vr assembly"
- Reply: Gecko: "Re: sn.exe -Vr assembly"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]
Date: Fri, 21 Jan 2005 07:12:31 -0500
"Gecko" <nada@nada.com> wrote in message
news:%23BBA1Gz$EHA.1452@TK2MSFTNGP11.phx.gbl...
<snip>
> I am currently in the process of developing a Windows application that is
> intended to run in home computers so you can forget about trying to rely
> on the users logging as restricted users and protect my assemblies that
> way, heck, as far as I know, the users of the application themselves may
> want to tamper with my files to just to piss me off!!
Why would a user's modification of your assemblies on their own machine have
any effect on you? If you're concerned about protecting your intellectual
property, obfuscation is the generally recommended first line protection.
> At the end, the whole idea is to be able to distribute an exe and a dll to
> my users that can't be tampered with by some hacker or by them.
What you want simply isn't possible. It's even possible to tamper with
unmanaged assemblies, but that happens to be considerably more difficult
than tampering with managed assemblies. You can increase the difficulty of
reverse engineering and tampering with your managed assemblies via
obfuscation.
Strong naming also has its place, but it's meant to protect your users, not
you (despite what various articles and even some of the Microsoft
documentation might suggest). If they run as admins and lose that
protection, that is at least partly their problem. If you feel that it's at
least partly your fault for distributing assemblies that are so trivially
tampered, then perhaps .NET isn't for you.
> The application uses remoting to communicate with the server and I think
> there is some integrity checking that goes on there but I am still trying
> to figure all this out.
That's another issue entirely. If you're counting on your client
application to perform data validation, permissions verifications, or other
security measures that aren't replicated on the server, then you've got a
much bigger problem than tampering with your distributed client assemblies.
Basically, in an "any client" remoting scenario, anyone could submit
requests to your server, and the only information the server has is the data
received from the client. That data can be submitted from any client
application, not just the one you distributed, and it's not all that
difficult to simulate most remoting communications. Unless you are
restricting communication to trusted clients (e.g.: by implementing IPsec
restrictions to allow distribution of middle tier work between multiple
fully controlled servers without allowing other clients to connect to these
servers), you should not be trusting that supposed protective mechanisms run
on the client have really been run.
- Next message: Joe: "Re: Determine what security permissions are needed"
- Previous message: Nicole Calinoiu: "Re: Determine what security permissions are needed"
- In reply to: Gecko: "Re: sn.exe -Vr assembly"
- Next in thread: Gecko: "Re: sn.exe -Vr assembly"
- Reply: Gecko: "Re: sn.exe -Vr assembly"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]
Relevant Pages
|