Any RAW, they must be raw, non weight bearing bones are fine for dogs to have. I give my boy raw baby back pork ribs (he's a 9 lb chi x dach) a couple times a month to help keep his teeth clean. I watch him and when he gets down to a piece that's small enough for him to swallow whole I trade him a really good, stuffed, Kong, for the bone. Other bones that can be fed to a small dog are raw chicken bones such as wings, and backs (remove the skin) I don't feed them because my boy is sensitive to chicken. If you have a larger dog you can feed beef ribs, pork ribs, turkey necks, etc. Again the bones must be raw, cooked bones can splinter. I say non weight bearing bones, because weight bearing bones are very dense and can chip or crack teeth if the dog decides to bite down hard on the bone rather then gnawing on it.
I've trained my boy to only eat his bones on a towel, while still teaching him that I had him confined to an exercise pen so that he could not drag the bone all over the house. Doing that makes clean-up easy.
For store bought chews I give him cows hoofs and antlers. There is a danger of those cracking teeth, but my boy gnaws them rather then biting down hard.
The article citing not giving leftover chicken bones ( cooked I assume) is good advice but this line from the article gave me a good laugh, "You shouldn’t give them large raw bones because they can be full of germs (and if they weren’t at first, they will be once your dog has dragged them all over the yard.)" Seriously ? LOL. Dogs eat all kinds of things much much nastier than a bone which has been dragged through the dirt or partially buried for later enjoyment. A dog's gastric acidity is very high with a PH level of 2 or less I believe and is very efficient at killing all kinds of "germs" which would make the average human ill as can be. It also is wonderful at breaking down raw bone and other raw components.
I agree with not buying the bones from the store because you have no idea what you are getting and if it is raw or not.
What @Rain posted is essentially my approach as well, raw only and no weight bearing bones for an aggressive chewer or at all.
Well, contrary to popular belief, RAW chicken bones are fantastic for dogs. They are not weight bearing, easy for small dogs and puppies to chew through, cheap, and do a great job at cleaning teeth. It is COOKED chicken bones that dogs cannot have. COOKED chicken bones can splinter and cause problems, but RAW chicken bones are great.
As long as it's raw and, for most dogs non weight bearing. Some larger dogs with very powerful jaws are fine with weight bearing bones form smaller, more delicate boned animals like goats and deer but, unless it's a wolfdog or some other breed with 1200 PSI jaw strength, large weight bearing bones aren't good (like beef leg bones, no go except for a few dogs.)
Raw chicken is fine for any dog, even the legs but NEVER, NEVER give a dog any cooked bone for any reason - even if you think they cannot break it, don't give it to them.