Prevent changing default app for some file extensions
I'm using OS X 10.10.1.

The file that stores the "Open With" data seems to be ~/Library/Preferences/com.apple.LaunchServices/com.apple.LaunchServices.secure.plist

Assuming you've setup all of your apps' "Open With" settings, you can ensure that they're not permanently overwritten by removing write permissions from the above file:

chmod 444 ~/Library/Preferences/com.apple.LaunchServices/com.apple.LaunchServices.secure.plist

It kind of works.

I tested this using a .docx file. I set my "Open With" preference to Pages.app and then removed the write permission of the LaunchServices plist file. I found that despite changing the permissions of the preference file, I was still able to change the .docx's "Open With" preference to Microsoft Word. However, after restarting the machine the setting was reverted to the one in the "com.apple.LaunchServices.secure.plist" file as it couldn't write the new data to the file.

I assume OS X stores in memory the "Open With" information if it can't write to the LaunchServices file, which is lost after a restart.

Not a great solution and I hope there's a better one, but it's a start.

You can revert the change by running this command:

chmod 644 ~/Library/Preferences/com.apple.LaunchServices/com.apple.LaunchServices.secure.plist