Как интегрировать NSURLConnection с UIProgressView?

** Предупреждение: подход, описанный в этом ответе, применим только к очень конкретным сценариям и не является безопасным, поскольку атаки 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, история , браузера или любой другой конфиденциальной информации, поэтому вы можете иметь дело с ними позже, запретив их учетную запись или контактные органы.

24
задан Eric Galluzzo 4 April 2016 в 12:36
поделиться

3 ответа

Не уверенный то, что я пропускаю здесь, но Ваш filesize являющийся-1, кажется, Ваша проблема. документы API ясно состояние, которое expectedContentLength не может быть доступно и что NSURLResponseUnknownLength возвращается в этих случаях. NSURLResponseUnknownLength определяется как:

#define NSURLResponseUnknownLength ((long long)-1)

В этих случаях, Вы не можете получить точный прогресс. Необходимо будет обработать это и отобразить неопределенный какой-то метр прогресса.

29
ответ дан Dave Dribin 28 November 2019 в 23:52
поделиться

Я думаю, что Вы распечатываете размер файла неправильно. Если self.filesize действительно NSNumber, Вы печатаете его с помощью эти %@ формат, потому что это - объект, не примитив:

NSLog(@"filesize: %@", self.filesize);

При помощи эти %d, Ваш просто печатают указатель значение self.filesize. Для распечатывания фактического длинного длинного значения используйте %lli (%d, только для 32-разрядных значений):

NSLog(@"filesize: %lli", [self.filesize longLongValue]);

, Таким образом, Ваш self.filesize на самом деле -1, и подразделение корректно.

6
ответ дан Dave Dribin 28 November 2019 в 23:52
поделиться

В вашем коде размер файла выглядит как объект NSNumber (!). Итак

NSLog (@ "Размер файла:% d", self.filesize);

и

NSLog (@ "content-length:% d bytes", self.filesize);

скорее всего сообщит что-то вроде адреса (id) этого объекта (или чего-то еще). Это

файл: 4687472

понимаете. Как указывалось другими, размер файла, возвращаемого ответом, действительно равен -1, то есть

NSURLResponseUnknownLength

то есть сервер не вернул размер файла.

0
ответ дан 28 November 2019 в 23:52
поделиться