Esto impide que la página se cargue 'sola' (fuera de un frame):
<script>
if (!opener) cerrar()
function cerrar() {
var ventana = window.self;
ventana.opener = window.self;
ventana.close();
}
</script>
Para que detecte desde dónde se está llamando a la página, sé que hay un código y que lo vi en estos foros, pero no lo recuerdo, lo siento.