¿Por qué exponer la API personal no es seguro?

Por lo que estoy leyendo en varios lugares, como aquí , aquí o aquí , no es seguro exponer la API personal a la Dapp de front-end a través de RPC.

Por lo tanto, pedirles a los usuarios que ejecuten geth --rpc --rpcapi "eth,net,web3,personal" --rpccorsdomain "http://yourDomainno es seguro.

Mi pregunta es ¿por qué es así? Tengo la impresión de que los enlaces que proporcioné lo pasan por alto, pero todavía no estoy un poco claro.

¡Gracias!

EDITAR

De las respuestas, me gustaría ampliar/aclarar un poco mi confusión:

Un usuario inicia sesión en su computadora y escribe geth --rpc --rpcapi "eth,net,web3,personal" --rpccorsdomain "http://yourDomain.com"en la terminal.

Esto permite que su nodo escuche http://yourDomain.com. Luego abre un navegador y va a Dapp en http://yourDomain.com.

Entonces seguro que podría jugar con su propio nodo y cuentas, pero ¿cómo un atacante externo podría hacer eso?

Respuestas (1)

  1. Divulgación de información: personal.listAccounts, dirá cuáles son las direcciones (cuenta externa) que contiene el nodo.
  2. Fuerza bruta: siga solicitando desbloquear la cuenta [personal.unlockAccount()] usando listAccounts (función anterior), bloqueando cuentas existentes (personal.lockAccount) al azar. Inadvertidamente ataque DoS
  3. Creación de cuenta innecesaria: personal.newAccount() , siga creando cuentas, puede haber miles de millones de ellas para que se llene el espacio de su servidor (geth crea archivos de almacén de claves en la creación de la cuenta)

Actualizaciones:

¿Quién sería capaz de hacer hacking?

Respuesta: Cualquiera, con mala intención.

¿Cómo sería alguien capaz de realizar las tareas anteriores?

Respuesta: Desde la consola de su navegador, podría hacer lo siguiente.

     var Web3 = require('web3');
         var web3 = new Web3();
         web3.setProvider(new web3.providers.HttpProvider("http://yourDomain"));
for(i=0;i<100000000;i++){
web3.personal.newAccount(/*some random function*/);
}// There the hacker could able to create 100000000 many accounts in your server.
web3.eth.defaultAccount="0xHackersOwnAccount"; //As the hacker knows somehow all incoming money transfer is to your default account, but alas !!  no more

Espero no haber enseñado al tipo equivocado.

Lo entiendo, sin embargo, estaba más perplejo sobre quién podría hacer eso y cómo. He editado la pregunta para reflejar eso.
Ya veo, gracias! (aunque, como sospeché, el atacante necesitaría controlar la computadora/sesión de la víctima, entonces, si advierte a sus usuarios correctamente, podría ser aceptable). No le enseñaste al tipo equivocado, jaja. Solo estaba dudando entre usar la API personal o pedirles a los usuarios que desbloqueen sus cuentas cuando usan el Dapp que estoy construyendo.