Как насчет идеи провести пен-тест обхода mysql_escape_string и htmlspecialchar с использованием многобайтных кодировок. Развеевание в паблике мифа в реальность! Если да, то многие двиги можна скомпроментировать (искажение данный или експлуатация разных уязвимостей!). Смотрю здесь сегодня собрание)
Тесть:
(эта функция уже не рекомендуется к использованию, а функция mysql_real_escape_string проверяет кодировку текущего соединения, так что у неё меньше проблем с подобным уязвимостями.)
Код:
/* {{{ proto string mysql_escape_string(string to_be_escaped)
Escape string for mysql query */
PHP_FUNCTION(mysql_escape_string)
{
char *str;
int str_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) {
return;
}
/* assume worst case situation, which is 2x of the original string.
* we don't realloc() down to the real size since it'd most probably not
* be worth it
*/
Z_STRVAL_P(return_value) = (char *) safe_emalloc(str_len, 2, 1);
Z_STRLEN_P(return_value) = mysql_escape_string(Z_STRVAL_P(return_value), str, str_len);
Z_TYPE_P(return_value) = IS_STRING;
if (MySG(trace_mode)){
php_error_docref("function.mysql-real-escape-string" TSRMLS_CC, E_DEPRECATED, "This function is deprecated; use mysql_real_escape_string() instead.");
}
}
/* }}} */
Последний раз редактировалось Root-access; 07.04.2010 в 00:17..