If you want accurate distance and speed you'll need a wheel rotation sensor. I believe Strava uses GIS data to try and make the GPS track more accurate (there are known issues calculating distance with inaccurate GPS) so this probably accounts for some of the discrepancy, although frankly I don't think its much better. If wheel sensor data is available, Strava will use this for speed and distance I believe. Even so I usually see 0.1 mile differences between Garmin and Strava, probably a rounding error?