Насколько безопасно использовать post-запросы через ajax?

Я делаю приложение для контроля инвентаризации на django. Все данные из базы данных берутся через ajax и api, то есть get, post и put запросы. Я использую django view only для отображения html шаблонов. Мне нужен совет, насколько безопасно использовать код, подобный этому:

function iterTable() {
    let items = [];
    let docDate;
    let docContragent;
    let docWare;
    let comment;
    let table = document.querySelector(".invoice-add-table table");
    for (var i = 1, row; row = table.rows[i]; i++) {
      if(row == document.querySelector('.add-elements')) {
        break;
      }
      docDate = document.querySelector('input[name="invoice-date"]').value
      docContragent = document.querySelector('select[name="invoice-contragent-select"]').value
      docWare = document.querySelector('select[name="warehouse-select"]').value
      comment = document.querySelector('textarea[name="invoice-comment"]').value
      // ITEMS
      let name = row.cells[1].querySelector('span').dataset.id
      let quantity = row.cells[2].querySelector('input').value
      let buy_price = row.cells[3].querySelector('input').value
      let sell_price = row.cells[5].querySelector('input').value
  
      items.push({
        "product": name,
        "buy_price": buy_price,
        "sell_price": sell_price,
        "quantity": quantity,
      });
    }
  
    let invoice = {
      "warehouse": docWare,
      "date": docDate,
      "comment": comment,
      "contragent": docContragent,
      "items": items
    }
    let json = JSON.stringify(invoice);
  
    const csrftoken = Cookies.get('csrftoken');
    $.ajax({
        data: json,
        contentType: "application/json; charset=utf-8",
        type: "POST", // GET or POST
        headers: {'X-CSRFToken': csrftoken},
        url: "http://127.0.0.1:8000/warehouse/api/notes/",
        success: function (response) {
            alert('ok')
        },
        error: function (response) {
            console.log(response.responseJSON.errors)
        }
    });
    return false;
  }
  
document.querySelector('span[name="note-submit-btn"]').addEventListener("click", iterTable);

serialisers.py


def create(self, validated_data):
        last_num = ConsignmentNote.objects.filter(warehouse__company=self.context['request'].user.company).latest('id')
        items = validated_data.pop('items')
        note = ConsignmentNote.objects.create(**validated_data, doc_type = 1, number = last_num.number + 1)
        for item in items:
            product = item.pop('product')
            item = ConsignmentItem.objects.create(consignmentnote=note, product=product ,**item)
        return note
    
    def update(self, instance, validated_data):
        instance.date = validated_data.pop('date', instance.date)
        instance.comment = validated_data.pop('comment', instance.comment)
        instance.save()

        items_ids = [item['product'] for item in validated_data['items']]
        for page in instance.items.all():
            if page not in items_ids:
                page.delete()
        
        for item in validated_data['items']:
            page = ConsignmentItem( product=item['product'], quantity=item['quantity'], buy_price=item['buy_price'], sell_price=item['sell_price'], consignmentnote=instance)
            page.save()
        return instance

Поскольку данные отправляются непосредственно в api (в функцию create в сериализаторе), я не использую form.is_valid() (хорошая ли это идея), все проверки ограничиваются проверкой базы данных на совпадение полей (charfield, integerfield и т.д.)

Спасибо за любой совет

Вернуться на верх