Warum ist das Offenlegen der persönlichen API unsicher?

Nach dem, was ich an verschiedenen Stellen wie hier , hier oder hier lese , ist es nicht sicher, die persönliche API dem Front-End-Dapp über RPC zugänglich zu machen.

Daher geth --rpc --rpcapi "eth,net,web3,personal" --rpccorsdomain "http://yourDomainist es nicht sicher, die Benutzer zum Ausführen aufzufordern.

Meine Frage ist, warum ist das so? Ich habe den Eindruck, dass die Links, die ich bereitgestellt habe, durchscheinen, aber ich bin immer noch etwas unklar.

Vielen Dank!

BEARBEITEN

Aus den Antworten möchte ich meine Verwirrung etwas erweitern / klären:

Ein Benutzer meldet sich an seinem Computer an und tippt etwas geth --rpc --rpcapi "eth,net,web3,personal" --rpccorsdomain "http://yourDomain.com"auf dem Terminal ein.

Dadurch kann sein Knoten lauschen http://yourDomain.com. Dann öffnet er einen Browser und geht auf die Dapp unter http://yourDomain.com.

Dann wäre er sicher in der Lage, mit seinem eigenen Knoten und seinen Konten herumzuspielen, aber wie könnte ein externer Angreifer das tun?

Antworten (1)

  1. Offenlegung von Informationen: personal.listAccounts , gibt an, welche Adressen (externes Konto) dieser Knoten enthält.
  2. Brute Force: Fragen Sie weiterhin nach dem Entsperren des Kontos [personal.unlockAccount()], indem Sie listAccounts (obige Funktion) verwenden und vorhandene Konten (personal.lockAccount) nach dem Zufallsprinzip sperren. Unbeabsichtigter DoS-Angriff
  3. Unnötige Kontoerstellung: personal.newAccount() , erstellen Sie weiterhin Konten, möglicherweise Milliarden von ihnen, so dass Ihr Serverplatz voll wird (geth erstellt Keystore-Dateien bei der Kontoerstellung)

Aktualisierung:

Wer könnte hacken?

Antwort: Jeder, mit böswilliger Absicht.

Wie wäre jemand in der Lage, die oben genannten Aufgaben auszuführen?

Antwort: Von seiner Browserkonsole aus könnte er Folgendes tun.

     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

Ich hoffe, ich habe nicht den falschen Kerl unterrichtet.

Ich verstehe das, aber ich war eher ratlos, wer das tun könnte und wie. Ich habe die Frage bearbeitet, um dies widerzuspiegeln
Ich verstehe, danke! (obwohl, wie ich vermutete, der Angreifer den Computer/die Sitzung des Opfers im Griff haben müsste, dann könnte es akzeptabel sein, wenn Sie Ihre Benutzer richtig warnen). Sie haben nicht den Falschen unterrichtet, haha, ich habe nur gezögert, die persönliche API zu verwenden oder Benutzer zu bitten, ihre Konten zu entsperren, wenn sie die Dapp verwenden, die ich baue.