Common resource handles include file descriptors, network sockets, database connections, process identifiers (PIDs), and job IDs.
Similarly, the extra layer of indirection also increases the control that the managing system has over the operations performed on the referent.
For example, while a filename is forgeable (it is just a guessable identifier), a handle is given to a user by an external system, and thus represents not just identity, but also granted access.
Such usage is more common even in modern systems that do support passing handles, but it is subject to vulnerabilities like the confused deputy problem.
However, many operating systems still apply the term to pointers to opaque, "private" data structures—opaque pointers—or to indexes into internal arrays passed from one process to its client.