CGI Stored XSS - сообщается checkmarx на scanf / printf в C - PullRequest
0 голосов
/ 04 июля 2019

У нас есть отчет контрольной пометки, сгенерированный для продукта на основе C / C ++, и в нем упоминается CGI Stored XSS и указывается комбинация scanf / printf или fgets / printf.Там написано: « В строке 55 в файле file.c найден неподтвержденный вывод БД.Возможная эксплуатация XSS была найдена в printf в строке 55 '.

Ссылка Как решить проблему сохраненного XSS, о которой сообщает Checkmarx , говорит о похожей проблеме, но это для Java- предлагаемое решение заключается в использовании кодировки.Есть ли у нас такая кодировка для строк C?Также я прочитал, что нам нужно проверить входные строки, которые отправляются в printf;Я не уверен, какую проверку нужно сделать.Операторы в коде, на который ссылается отчет, выглядят так:

FILE * fp = fopen(...); // fp is valid
char buffer[256];

fgets(buffer, sizeof(buffer), fp);
printf( "%s", buffer ); // this is line 55

Предполагается ли проверять буфер на наличие в нем символов '%', '% n', как части проверки?

...