XSS (Cross Site Scripting) hacks are becoming more and more prevalent, and can be quite difficult to prevent. Whenever you accept user data and somehow display this data back to users, you are likely vulnerable to XSS hacks.
A simple implementation might look like the following. This stores the original raw user data and adds a my_get_raw()
function while the normal $_POST
, $_GET
and $_COOKIE
arrays are only populated with stripped data. In this simple example all I am doing is calling strip_tags()
on the data.
#ifdef ZTS
#define IF_G(v) TSRMG(my_input_filter_globals_id, zend_my_input_filter_globals *, v)
#else
#define IF_G(v) (my_input_filter_globals.v)
#endif
};
"my_input_filter",
my_input_filter_functions,
"0.1",
};
{
}
{
}
}
}
}
{
}
{
char *raw_var;
int var_len;
ALLOC_ZVAL(array_ptr);
INIT_PZVAL(array_ptr);
}
break;
ALLOC_ZVAL(array_ptr);
INIT_PZVAL(array_ptr);
}
break;
ALLOC_ZVAL(array_ptr);
INIT_PZVAL(array_ptr);
}
break;
}
strcpy(raw_var, "RAW_");
return 1;
}
{
char *var;
int var_len;
return;
}
break;
break;
break;
}
if(!array_ptr) {
}
} else {
}
}
SAPI_API int sapi_register_input_filter(unsigned int(*input_filter)(int arg, const char *var, char **val, size_t val_len, size_t *new_val_len), unsigned int(*input_filter_init)(void))
#define SAPI_INPUT_FILTER_FUNC(input_filter)
assert(mixed $assertion, Throwable|string|null $description=null)
php_info_print_table_start()
php_info_print_table_row(2, "PDO Driver for Firebird", "enabled")
php_info_print_table_end()
#define PHP_MINIT_FUNCTION
#define PHP_MINFO_FUNCTION
#define PHP_RSHUTDOWN_FUNCTION
PHPAPI size_t php_strip_tags(char *rbuf, size_t len, const char *allow, size_t allow_len)
PHPAPI void php_register_variable_ex(const char *var_name, zval *val, zval *track_vars_array)
ZEND_API zend_result zend_parse_parameters(uint32_t num_args, const char *type_spec,...)
struct _zend_function_entry zend_function_entry
#define ZEND_INIT_MODULE_GLOBALS(module_name, globals_ctor, globals_dtor)
#define ZEND_DECLARE_MODULE_GLOBALS(module_name)
#define ZEND_END_MODULE_GLOBALS(module_name)
#define ZEND_BEGIN_MODULE_GLOBALS(module_name)
#define estrndup(s, length)
#define REGISTER_LONG_CONSTANT(name, lval, flags)
ZEND_API zval *ZEND_FASTCALL zend_hash_find(const HashTable *ht, zend_string *key)
#define STANDARD_MODULE_HEADER
struct _zend_module_entry zend_module_entry
#define STANDARD_MODULE_PROPERTIES
ZEND_API void zval_ptr_dtor(zval *zval_ptr)