SQL Injections [SQLi]
1. Введение:
2. Типичный уязвимый код:
function authenticate(req, res, next) {
var email = req.query.email,
password = req.query.password,
sqlRequest = new sql.Request(),
sqlQuery = "select * from users where (email='"
+ "' and password = '" + password + "')";
sqlRequest.query(sqlQuery)
.then(function (recordset) {
if (recordset.length == 1) {
loggedIn = true;
// Auth successful
} else {
// Auth failure
}
})
.catch(next);
}def authenticate(request):
email = request.POST['email']
password = request.POST['password']
sql = "select * from users where (email ='"
+ email
+ "' and password ='" + password + "')"
cursor = connection.cursor()
cursor.execute(sql)
row = cursor.fetchone()
if row:
loggedIn = "Auth successful"
else:
loggedIn = "Auth failure"
return HttpResponse("Logged In Status: " + loggedIn)3. Смягчение последствий:
3.1. Подготовленные условия:
3.2. Хранимые процедуры:
3.3. Проверка ввода:
3.4. Исключение вводимых данных пользователем:
4. Выводы:
Last updated