The basic grammatical form seems the same, both are built with the verb "sein" plus participle:
Sie ist gefallen. (Past perfect tense)
Er ist gefesselt. (Passive voice)
So they look like they could be easy to confuse, while in fact, there is almost never any confusion about which of them is meant.
The reason: Only a very special fraction of verbs in German use "sein" to build the perfect tense, most use "haben". The ones that use "sein" are almost all verbs of motion, and, most importantly for this topic, they are intransitive, which means they cannot take an accusative ("direct") object.
Ich bin gegangen. (I went. It's not possible to "go something" or to "go someone", which means that the verb "to go" is intransitive.)
Du bist gelaufen. (You ran.)
Er ist geschwommen. (He swam.)
Sie ist nach Köln gefahren. (She went to Cologne [on something that has wheels].)[1]
Es ist auf dem Wasser getrieben. (It floated on the water.)
Wir sind auf den Berg gestiegen. (We climbed [on] the mountain.)
Sie sind vom Stuhl gefallen. (They fell from the chair.)
Why is it important that they are all intransitive? Because that means they cannot be set into passive voice. When setting a verb into passive voice, the accusative object becomes the subject:
Anne hat Boris zu ihrer Party eingeladen. (Anne invited Boris to her party.)
=> Boris wurde von Anne zu ihrer Party eingeladen. (Boris was invited to her party by Anne.)
or => Boris ist zu Annes Party eingeladen. (Zustandspassiv) (Boris is invited to Anne's party [because he has been invited].)
It's not possible to say "Ich bin gegangen" and mean it as a passive. It's always past tense, because there is no passive of "to go."
There's a similarity with "to go" in English here. When you say "She is gone.", that's not passive voice. And there's no way to confuse it with passive voice, because there is no passive of "to go".
Similarly, in German, although both forms look the same on first glance, it's never really possible to confuse them. Most of the time, you will have no problem if you understand the meaning of the sentence. If you need to go the analytical road, you can just check if the verb builds its past perfect with "sein", and if so, it's the past perfect.
[1] "Fahren" is a bit special in that it has a transitive variant: "Sie fährt ihn nach Köln." (She drives him to Cologne.) However, the perfect tense of the transitive form is built with "haben": "Sie hat ihn nach Köln gefahren.", so it's not an exception to the rule here.