It's best to think of Access like an actual book made of paper.
You need to control access to the book. People who get to the
book can destroy the book, or look at pages, or even photocopy
the book. They don't need to find a code-exploit to do so.
The book is written in Estonian, and most users don't actually
understand it as such, which is good enough for some applications.
Provided only trusted users are given access.
-----
Access is a layer over the database primitives of
either the operating system or an ODBC server.
This means that you do not have security independent
of the operating system/server.
The first security problem of Access is that the data is
not securely protected from the users.
A subset of that problem is that Access does not provide
record-level security: individual records cannot be
securely protected from a user.
These are the well known exploits for Access.
These are also the well known exploits for Jet/MDB,
That is, Access has the same problem using any data source
as it has using MDB's, and MDBs have the same problem
using any front-end.
These well-known-exploits mean that you can only use
Access/ODBC or Access/Jet to the extent that you trust
your users: Data cannot be securely protected from users.
Data can be obscured. For many applications that is suitable.
Data can be visible. For many applications that is suitable.
Data can be changed. For many applications that is suitable.
Data can be logged and audited, subject to the limitations above.
Access is not generally used for outward-facing interfaces. To do
so would expose Access to untrusted users, which would expose
your data.
Access is not subject to buffer overflow attacks, but that misses
the point: a buffer overflow attack is used to escalate privileges:
anyone who could attempt a buffer overflow attack has access,
and must be a trusted user.
This is generally true for all code exploits, which is why code
exploits are not important for Access. Anyone who is in a position
to use a code exploit already has access to the data, and must be
a trusted user.
Access is subject to SQL injection attacks. Any user who can
do an SQL injection attack has access to the data, and must
be a trusted user, but you do need to be minimally aware of
that:
http://xkcd.com/327/.
Having said, that, Access can be used to hide data from
trusted users. If you are using "workgroup security" to hide
the data, you need to review the Access Security FAQ.
(david)