Позвольте A быть суммой миллисекунд. Затем Вы имеете:
seconds=(A/1000)%60
minutes=(A/(1000*60))%60
hours=(A/(1000*60*60))%24
и так далее (%
оператор модуля).
Hope это помогает.
Кто-то может внедрить SQL, чтобы проверка авторизации возвращала эквивалент истины вместо ложного, чтобы получить доступ к вещам, которые должны быть запрещены.
Или они могут внедрить соединение таблицу каталога самой себе 20 или 30 раз, чтобы повысить производительность базы данных для обхода.
Или они могут вызвать хранимую процедуру, которая запускается от имени другого пользователя базы данных, которая изменяет данные.
'); SELECT * FROM Users
Да, вам следует ограничить их доступ только к данным (таблицам / представлениям), которые они действительно должны видеть, особенно если они общедоступны.
Только если вы не возражаете против того, чтобы произвольные пользователи читали всю базу данных . Например, вот простая вводимая последовательность входа в систему:
select * from UserTable where userID = 'txtUserName.Text' and password = 'txtPassword.Text'
if(RowCount > 0) {
// Logged in
}
Мне просто нужно войти в систему с любым именем пользователя и паролем 'или 1 = 1 , чтобы войти в систему как этот пользователь.
Будьте очень осторожны. Я предполагаю, что вы удалили выпадающую таблицу, изменили таблицу, создали таблицу и усекли таблицу, верно?
По сути, с хорошей SQL-инъекцией вы должны иметь возможность изменить все, что зависит от базы данных. Это может быть авторизация, разрешения, доступ к внешним системам, ...
Вы когда-нибудь записывали на диск данные, полученные из базы данных? В этом случае они могут загрузить исполняемый файл, такой как perl, и файл perl, а затем выполнить их, чтобы получить лучший доступ к вашему ящику.
Вы также можете определить, что это за данные, используя ситуацию, когда ожидается конкретное возвращаемое значение. Т.е. если SQL возвращает истину, выполнение продолжается, если нет, выполнение останавливается. Затем вы можете использовать двоичный поиск в своем SQL. выберите count (*), где user_password> 'H'; Если счетчик> 0 продолжается. Теперь вы можете найти точный пароль в виде простого текста, не требуя его вывода на экран.
Кроме того, если ваше приложение не защищено от ошибок SQL, может быть случай, когда они могут ввести ошибку в SQL или в SQL результата и отобразить результат на экране во время обработки ошибок. Первый оператор SQL собирает хороший список имен пользователей и паролей. Второй оператор пытается использовать их в условии SQL, для которого они не подходят. Если в этом состоянии ошибки отображается оператор SQL, ...
Jacob
может быть случай, когда они могут ввести ошибку в SQL или в SQL результата и отобразить результат на экране во время обработки ошибок. Первый оператор SQL собирает хороший список имен пользователей и паролей. Второй оператор пытается использовать их в условии SQL, для которого они не подходят. Если в этом состоянии ошибки отображается оператор SQL, ...Jacob
может быть случай, когда они могут ввести ошибку в SQL или в SQL результата и отобразить результат на экране во время обработки ошибок. Первый оператор SQL собирает хороший список имен пользователей и паролей. Второй оператор пытается использовать их в условии SQL, для которого они не подходят. Если в этом состоянии ошибки отображается оператор SQL, ...Jacob
Да, продолжайте беспокоиться о SQL-инъекции. Вредоносные операторы SQL предназначены не только для записи.
Также представьте, если бы существовали связанные серверы или если бы запрос был написан для доступа к ресурсам между базами данных. т.е.
SELECT * from someServer.somePayrollDB.dbo.EmployeeSalary;