Use file handles where possible
Detect and handle file operation errors
Create temporary files in private directories
Open files with as few privileges as necessary
Validate path and filename parameters supplied to file functions
Ensure that files are really files (not symlinks)