** Предупреждение: подход, описанный в этом ответе, применим только к очень конкретным сценариям и не является безопасным, поскольку атаки SQL-инъекции не только полагаются на возможность вставлять X=Y
. **
Если злоумышленники пытаются взломать форму с помощью переменной PHP $_GET
или с помощью строки запроса URL, вы сможете поймать их, если они не защищены.
RewriteCond %{QUERY_STRING} ([0-9]+)=([0-9]+)
RewriteRule ^(.*) ^/track.php
Поскольку 1=1
, 2=2
, 1=2
, 2=1
, 1+1=2
и т. д. ... являются распространенными вопросами к базе данных SQL злоумышленника. Возможно, он также используется многими хакерскими приложениями.
Но вы должны быть осторожны, чтобы не переписывать безопасный запрос с вашего сайта. Вышеупомянутый код дает вам возможность переписать или перенаправить (зависит от вас) эту динамическую строку запроса, зависящую от хакерства, на страницу, в которой будет храниться IP-адрес злоумышленника или EVEN THEIR COOKIES, история , браузера или любой другой конфиденциальной информации, поэтому вы можете иметь дело с ними позже, запретив их учетную запись или контактные органы.
Не уверенный то, что я пропускаю здесь, но Ваш filesize
являющийся-1, кажется, Ваша проблема. документы API ясно состояние, которое expectedContentLength
не может быть доступно и что NSURLResponseUnknownLength
возвращается в этих случаях. NSURLResponseUnknownLength
определяется как:
#define NSURLResponseUnknownLength ((long long)-1)
В этих случаях, Вы не можете получить точный прогресс. Необходимо будет обработать это и отобразить неопределенный какой-то метр прогресса.
Я думаю, что Вы распечатываете размер файла неправильно. Если self.filesize
действительно NSNumber
, Вы печатаете его с помощью эти %@
формат, потому что это - объект, не примитив:
NSLog(@"filesize: %@", self.filesize);
При помощи эти %d
, Ваш просто печатают указатель значение self.filesize. Для распечатывания фактического длинного длинного значения используйте %lli
(%d
, только для 32-разрядных значений):
NSLog(@"filesize: %lli", [self.filesize longLongValue]);
, Таким образом, Ваш self.filesize на самом деле -1, и подразделение корректно.
В вашем коде размер файла выглядит как объект NSNumber (!). Итак
NSLog (@ "Размер файла:% d", self.filesize);
и
NSLog (@ "content-length:% d bytes", self.filesize);
скорее всего сообщит что-то вроде адреса (id) этого объекта (или чего-то еще). Это
файл: 4687472
понимаете. Как указывалось другими, размер файла, возвращаемого ответом, действительно равен -1, то есть
NSURLResponseUnknownLength
то есть сервер не вернул размер файла.