RWOP queries, security and .NET front ends

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Freeserve

    RWOP queries, security and .NET front ends

    Not sure whether this is the right group, but I can't find anything in the
    ..NET groups and my apologies if this has already been covered or is
    considered "off subject".

    I am looking at using an Access database to hold data which will be handled
    via VB.NET and I am not sure about some of the security aspects. I am going
    the .NET route as part of the application involves using a Pocket PC and I
    don't want part to involve deploying msaccess.exe and so on as well as the
    ..NET stuff. Including a .mdb file in with the .NET stuff is OK.

    With an Access front end it is possible to stop users from running RWOP
    queries except when called from an Access form by putting a function in the
    query which checks where it is being called from by using CurrentObjectTy pe.
    I am looking for something similar to use with VB.NET. However, as far as I
    can see, if the VB.NET app calls the RWOP query in the Access database,
    there is not much you can do to stop them calling the RWOP query themselves,
    e.g. from their own Access database. My question is: How to I stop users
    from running queries or accessing tables in the Access back end while still
    giving my VB.NET "front end" sufficient access, please?

    When I've done Access apps that require reasonable security I've done things
    like:

    1) Use user-level security.
    2) Develop using one MDW file, but not allow users to use this. Instead they
    use the default system.mdw. Users, therefore, enter the app as the Admin
    user from system.mdw and the app then checks their Windows ID to specify
    which parts of the app they can access.
    3) Do a proper removal of the Shift bypass stuff so they are forced into
    running code that picks up their Windows ID. Either that or ID's are held in
    tables and used from there, with the users having to enter an ID and
    password to authenticate themselves.

    The problem seems to be that if I am using user-level security for the
    Access database, VB.NET requires a user ID and password for this that also
    requires the existence of - and physical access to - an MDW file with those
    details in. This is where the security hole appears to be. As many people
    know, if a user has physical access to a .mdw file, there are tools around
    that will let them see all groups, ID's and passwords in that .mdw file. I
    also know that it is possible for some people to break into a .mdb file even
    without the developer's .mdw file, but if people are that desperate to get
    into my app, well, they need to get a life. The level of sensitivity of the
    data is such that I need "only" to stop people running RWOP queries that
    they shouldn't be running.

    The best I can think of is to give the .mdw file a non-standard name, e.g.
    MyPretendName.d ll, and try and hide it somewhere on the user's PC other than
    in the application's own folder, in which case I then need to find a way of
    deploying it there and I haven't got that far in my understanding of .NET
    application deployment to be able to do that. It doesn't appear a very
    robust way to do it either.

    Any help would be much appreciated. I don't expect this is the first time
    anyone has wanted to know the answer to this.

    Alan Cossey

    PS Using SQL Server or the like is not an option.


  • MGFoster

    #2
    Re: RWOP queries, security and .NET front ends

    Freeserve wrote:
    [color=blue]
    > Not sure whether this is the right group, but I can't find anything in the
    > .NET groups and my apologies if this has already been covered or is
    > considered "off subject".
    >
    > I am looking at using an Access database to hold data which will be handled
    > via VB.NET and I am not sure about some of the security aspects. I am going
    > the .NET route as part of the application involves using a Pocket PC and I
    > don't want part to involve deploying msaccess.exe and so on as well as the
    > .NET stuff. Including a .mdb file in with the .NET stuff is OK.
    >
    > With an Access front end it is possible to stop users from running RWOP
    > queries except when called from an Access form by putting a function in the
    > query which checks where it is being called from by using CurrentObjectTy pe.
    > I am looking for something similar to use with VB.NET. However, as far as I
    > can see, if the VB.NET app calls the RWOP query in the Access database,
    > there is not much you can do to stop them calling the RWOP query themselves,
    > e.g. from their own Access database. My question is: How to I stop users
    > from running queries or accessing tables in the Access back end while still
    > giving my VB.NET "front end" sufficient access, please?
    >
    > When I've done Access apps that require reasonable security I've done things
    > like:
    >
    > 1) Use user-level security.
    > 2) Develop using one MDW file, but not allow users to use this. Instead they
    > use the default system.mdw. Users, therefore, enter the app as the Admin
    > user from system.mdw and the app then checks their Windows ID to specify
    > which parts of the app they can access.
    > 3) Do a proper removal of the Shift bypass stuff so they are forced into
    > running code that picks up their Windows ID. Either that or ID's are held in
    > tables and used from there, with the users having to enter an ID and
    > password to authenticate themselves.
    >
    > The problem seems to be that if I am using user-level security for the
    > Access database, VB.NET requires a user ID and password for this that also
    > requires the existence of - and physical access to - an MDW file with those
    > details in. This is where the security hole appears to be. As many people
    > know, if a user has physical access to a .mdw file, there are tools around
    > that will let them see all groups, ID's and passwords in that .mdw file. I
    > also know that it is possible for some people to break into a .mdb file even
    > without the developer's .mdw file, but if people are that desperate to get
    > into my app, well, they need to get a life. The level of sensitivity of the
    > data is such that I need "only" to stop people running RWOP queries that
    > they shouldn't be running.
    >
    > The best I can think of is to give the .mdw file a non-standard name, e.g.
    > MyPretendName.d ll, and try and hide it somewhere on the user's PC other than
    > in the application's own folder, in which case I then need to find a way of
    > deploying it there and I haven't got that far in my understanding of .NET
    > application deployment to be able to do that. It doesn't appear a very
    > robust way to do it either.[/color]

    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    Why not use SQL Server CE ("the compact database"). See this URL:

    Get the flexibility you need to use integrated solutions, apps, and innovations in technology with your data, wherever it lives—in the cloud, on-premises, or at the edge.


    The .NET newsgroups are on Microsoft news servers:

    microsoft.publi c.dotnet.langua ges.csharp
    microsoft.publi c.dotnet.langua ges.vb (not sure)

    --
    MGFoster:::mgf0 0 <at> earthlink <decimal-point> net
    Oakland, CA (USA)

    -----BEGIN PGP SIGNATURE-----
    Version: PGP for Personal Privacy 5.0
    Charset: noconv

    iQA/AwUBQIW90YechKq OuFEgEQLbWgCg9T 1HUPU1yQPHAUn1q PaE6I1CNAMAn1MW
    oZRu2yzCTMazXFP UEQU4TXLn
    =WDbC
    -----END PGP SIGNATURE-----

    Comment

    • Alan Cossey

      #3
      Re: RWOP queries, security and .NET front ends

      "MGFoster" <me@privacy.com > wrote in message
      news:g5jhc.2768 $eZ5.2688@newsr ead1.news.pas.e arthlink.net...[color=blue]
      > Freeserve wrote:
      >[color=green]
      > > Not sure whether this is the right group, but I can't find anything in[/color][/color]
      the[color=blue][color=green]
      > > .NET groups and my apologies if this has already been covered or is
      > > considered "off subject".
      > >
      > > I am looking at using an Access database to hold data which will be[/color][/color]
      handled[color=blue][color=green]
      > > via VB.NET and I am not sure about some of the security aspects. I am[/color][/color]
      going[color=blue][color=green]
      > > the .NET route as part of the application involves using a Pocket PC and[/color][/color]
      I[color=blue][color=green]
      > > don't want part to involve deploying msaccess.exe and so on as well as[/color][/color]
      the[color=blue][color=green]
      > > .NET stuff. Including a .mdb file in with the .NET stuff is OK.
      > >
      > > With an Access front end it is possible to stop users from running RWOP
      > > queries except when called from an Access form by putting a function in[/color][/color]
      the[color=blue][color=green]
      > > query which checks where it is being called from by using[/color][/color]
      CurrentObjectTy pe.[color=blue][color=green]
      > > I am looking for something similar to use with VB.NET. However, as far[/color][/color]
      as I[color=blue][color=green]
      > > can see, if the VB.NET app calls the RWOP query in the Access database,
      > > there is not much you can do to stop them calling the RWOP query[/color][/color]
      themselves,[color=blue][color=green]
      > > e.g. from their own Access database. My question is: How to I stop users
      > > from running queries or accessing tables in the Access back end while[/color][/color]
      still[color=blue][color=green]
      > > giving my VB.NET "front end" sufficient access, please?
      > >
      > > When I've done Access apps that require reasonable security I've done[/color][/color]
      things[color=blue][color=green]
      > > like:
      > >
      > > 1) Use user-level security.
      > > 2) Develop using one MDW file, but not allow users to use this. Instead[/color][/color]
      they[color=blue][color=green]
      > > use the default system.mdw. Users, therefore, enter the app as the Admin
      > > user from system.mdw and the app then checks their Windows ID to specify
      > > which parts of the app they can access.
      > > 3) Do a proper removal of the Shift bypass stuff so they are forced into
      > > running code that picks up their Windows ID. Either that or ID's are[/color][/color]
      held in[color=blue][color=green]
      > > tables and used from there, with the users having to enter an ID and
      > > password to authenticate themselves.
      > >
      > > The problem seems to be that if I am using user-level security for the
      > > Access database, VB.NET requires a user ID and password for this that[/color][/color]
      also[color=blue][color=green]
      > > requires the existence of - and physical access to - an MDW file with[/color][/color]
      those[color=blue][color=green]
      > > details in. This is where the security hole appears to be. As many[/color][/color]
      people[color=blue][color=green]
      > > know, if a user has physical access to a .mdw file, there are tools[/color][/color]
      around[color=blue][color=green]
      > > that will let them see all groups, ID's and passwords in that .mdw file.[/color][/color]
      I[color=blue][color=green]
      > > also know that it is possible for some people to break into a .mdb file[/color][/color]
      even[color=blue][color=green]
      > > without the developer's .mdw file, but if people are that desperate to[/color][/color]
      get[color=blue][color=green]
      > > into my app, well, they need to get a life. The level of sensitivity of[/color][/color]
      the[color=blue][color=green]
      > > data is such that I need "only" to stop people running RWOP queries that
      > > they shouldn't be running.
      > >
      > > The best I can think of is to give the .mdw file a non-standard name,[/color][/color]
      e.g.[color=blue][color=green]
      > > MyPretendName.d ll, and try and hide it somewhere on the user's PC other[/color][/color]
      than[color=blue][color=green]
      > > in the application's own folder, in which case I then need to find a way[/color][/color]
      of[color=blue][color=green]
      > > deploying it there and I haven't got that far in my understanding of[/color][/color]
      ..NET[color=blue][color=green]
      > > application deployment to be able to do that. It doesn't appear a very
      > > robust way to do it either.[/color]
      >
      > -----BEGIN PGP SIGNED MESSAGE-----
      > Hash: SHA1
      >
      > Why not use SQL Server CE ("the compact database"). See this URL:
      >
      > http://www.microsoft.com/sql/CE/default.asp
      >
      > The .NET newsgroups are on Microsoft news servers:
      >
      > microsoft.publi c.dotnet.langua ges.csharp
      > microsoft.publi c.dotnet.langua ges.vb (not sure)
      >
      > --
      > MGFoster:::mgf0 0 <at> earthlink <decimal-point> net
      > Oakland, CA (USA)
      >
      > -----BEGIN PGP SIGNATURE-----
      > Version: PGP for Personal Privacy 5.0
      > Charset: noconv
      >
      > iQA/AwUBQIW90YechKq OuFEgEQLbWgCg9T 1HUPU1yQPHAUn1q PaE6I1CNAMAn1MW
      > oZRu2yzCTMazXFP UEQU4TXLn
      > =WDbC
      > -----END PGP SIGNATURE-----
      >[/color]

      Thanks for replying. As far as I am aware SQL Server CE only works on
      devices running the .NET Compact Framework and, though my app will include
      this and I may well use SQLSCE for that part, I want to use Jet/Access to
      store data on the PC for various reasons, rather than use SQL Server / MSDE
      2000.

      Alan


      Comment

      Working...