According to the community, you can do anything against her for a free win because her heals and poke are both "bad", so therefore she's a "trash" champion and anything beats her :^^^^^)))))))
Eh..... on all seriousness....
Because Sona is based on not-so-bad sustain with run in, poke, run away poke, you either outsustain her "once in a while" poke, or ignore her poke and just fish her off with tanks.
What's actually good against her:
What's not bad against her, but isn't insta-win:
What kind of things to avoid:

The first one's a given. 1) Leona can easily fish her out even if Sona tries to poke, and that Leona can "pierce" through minion waves, 2) Raka invalidates Sona's "periodic" poke, and 3) Super-bursty ADCs like Draaaaaven can very easily kill her if she steps in way too close.
Thresh, Alistar, and Blitz just needs a little bit of extra positioning to make botlane a living hell. If not, they will suffer like you do.
Why Lulu, Janna, and Morgana? Disengage in general isn't useful if the enemy has very little/no cc and are ranged; Sona fits perfectly into the "ranged no cc" category. Bard's pokes are just as "periodic" like Sona's, which is the perfect enemy that any Sona would want to see. Yeah, yeah, it may hurt, but by the time Bard gets to poke again, Sona has already healed herself/her allies enough back to full health.
Sona is my second most played support and she's overall very straightfoward to deal with.