You can not prevent users from posting your links on Facebook, Twitter or any other social media platform, this is because a link itself holds no copyright or infringement, even terms, conditions and licensing.
You can, however, block various social media sites from taking the description from the page and the images embedded on the page. This is simply done by blocking their crawler using robots.txt, for example, Facebook uses:
facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)
facebookexternalhit/1.1
So robots.txt would look something like this:
User-agent: facebookexternalhit
Disallow: /
Not using Open Graph
Most popular social media sites use Open Graph, so the logic would be not to use Open Graph if you do not want snippets of information being revealed on social media, again you can't block social media. If you do not want links to access via social media then you should a have login based system.
Force Redirect
Force redirects based on user agent generally don't work on most social media because the only reason their crawler visits your site is to obtain snippet information, which is prevented using user agent with robots.txt, so for example using:
<?php
if(strstr($_SERVER['HTTP_USER_AGENT'],'facebookexternalhit') || strstr($_SERVER['HTTP_USER_AGENT'],'facebookexternalhit')){
header('Location: http://google.com/iphone');
exit();
}
?>
Would not prevent your link being shared on Facebook as the link would still be accessible but without a mini description.
Summary...
You can not prevent the links to your pages being shared on any platform, never mind social media. If user-generated content writers do not want their content found on social media, then you must make it authentication and then, of course, you won't be indexed by Google either.
Lastly...
There is no such law that prevents users copying and pasting links on 3rd party websites, no matter what your license says, it would never stand up in court. You could, however, request the links to be removed by the 3rd party.