How do I prevent overhangs when using subdivision modifier?
The problem is due to ngons (again), probably because of the use of a boolean modifier (again).

The faces which overlap the hole are these one, two ngons around the hole:



The aim will be to organize quad around the hole. That could be done all over the discus, but, as the other part may stay flat this is not absolutely mandatory.

These quad will be "subdivision surface" modifier resistant!

You have also added many loops around the hole, I remove it for now.

So first cleanup:


Opening the ngons
Remake the border (which is not the same as the others)
Removing the doubled vertices


 

Creating vertices to obtain quad in the wanted part. I only do it here in the hole concerned part... So that will create ngons around, and that's not visible so long these faces stay flat and convex.


Subdividing the edges around
Grabbing vertices along the edges to the wanted location
Connecting quads




Now when we show the modifier:



As you want it squared, we'll add some bevel in order to maintain the subdivision effect. Use CtrlB to bevel and Numpad + and Numpad - to set the amount of edges.