How to restrict file system access in PHP? -


someone knows trick have php script self-restrict access file system (fopen, file_get_contents etc.)?

such calls should blocked except handful of selected file names (log file, access /tmp , similar).

this not security thing, rather means of forcing development team not access file system directly (and detect spots in existing code, case). want see exception in case (which gets caught , reported), content of such files must accessed other means.

i thinking implementing own streamwrapper file:// protocol, apparently there no way extend built-in filewrapper class.

option #1

you can use open_basedir php.ini directive limit directories app has access too. directories can semicolon separated can list directories want app access including /tmp folder.

the caveat affects things include, require.

option #2

you rename them using rename_function or runkit_function_rename , wrap renamed versions own logic.

quote documentation:

renames orig_name new_name in global function table. useful temporarily overriding built-in functions.

example:

rename_function('file_get_contents', 'nouse_file_get_contents');  function file_get_contents($filename, $use_include_path = false, $context, $offset = -1, $maxlen) {     //     // validation here     //     return nouse_file_get_contents($filename, $use_include_path, $context, $offset, $maxlen); } 

option #3

you setup coding standards devs , write unit tests run part of deployment before things pushed production. not sure release procedures these types of things should caught before production.


Comments

Popular posts from this blog

how to display 2 form fields on same line with bootstrap -

How do you convert a timestamp into a datetime in python with the correct timezone? -