It's sad to see this mistake being made repeatedly. It kind of works like this
1) Small project started, MySQL is used because that's all the developer knows
or it's convenient
2) Strict mode is never turned on; developer has no idea it exists
3) App gets popular
4) Too late to enable Strict
It's really the main reason why I don't recommend MySQL. Theres so many mistakes waiting to be made.
Why why why did MySQL have to win the damn race. It's the PHP of databases: it more or less works, but you're relying on a cardboard skyscraper built on a foundation of poop. And this will come back to bite you.
For anyone interested in knowing how the UTF8 attack works, Mathias Bynens has a fantastic presentation which describes the technical details: https://www.youtube.com/watch?v=qFfjJ8pOrWY