2012-01-11 3 views
1

Я хочу сделать SQL SELECT предложение так:NSString stringWithFormat нежелательный результат

NSLog(@"sql = %@",[NSString stringWithFormat:@"select * from Table1 Where ID = %i AND '%@' = strftime('%Y',startDate)",ID,date]); 

но он печатает мне:

sql = select * from Table1 Where ID = 1 AND '2012' = strftime('Y',startDate) 

% Y становится Y, как я мог это предотвратить?

+1

FYI, это действительно склонны к атакам инъекций. Все, что мне нужно сделать, это: date = @ "'; drop table Table1; -"; И * poof * ваши данные исчезли. –

ответ

4

Добавить еще %, чтобы избежать % характера:

NSLog(@"sql = %@",[NSString stringWithFormat:@"select * from Table1 Where ID = %i AND '%@' = strftime('%%Y',startDate)",ID,date]); 
1

Добавить% как то NSLog(@"sql = %@",[NSString stringWithFormat:@"select * from Table1 Where ID = %i AND '%@' = strftime('%%Y',startDate)",ID,date]);

Смежные вопросы