# إضافة XSRF لJavaScript

<!--category-- ASP.NET, Javascript -->
<datetime class="hidden">2024-08-22T05:30</datetime>

## المقدمة

عند إضافة صندوق البحث في [المقال السابق], تركنا جانب خاصية أمنية حرجة: حماية XSRFM SK2この記事 سيقوم بشرح كيفية إضافة الحماية XSRF إلى صندوق البحث

[TOC]

## ما هو XSRF?

XSRF تعني "Cross" -استغراق طلب الموقع . إنه نوع من الهجمات حيث يقوم موقع مخادع بإخدع المستخدم في القيام بأعمال على موقع آخر | . | على سبيل المثال |, | يمكن لموقع مخادف إخدع مستخدماً في إرسال سؤال بحث على موقعنا |

```mermaid
sequenceDiagram
    participant User as User
    participant Browser as Browser (JS)
    participant Server as ASP.NET Core Server
    participant Db as Database
    
    User->>Browser: Submit form or AJAX request
    Browser->>Server: Send HTTP request with XSRF token
    Server->>Server: Validate XSRF token
    alt Token Valid
        Server->>Db: Process request (e.g., Return search result)
        Db->>Server: Send response
        Server->>Browser: Return success response
        Browser->>User: Display success message
    else Token Invalid or Missing
        Server->>Browser: Return error response (400 Bad Request)
        Browser->>User: Display error message
    end

```

## الإعداد

لإضافة Javascript XSRF نحتاج أن نضيف وضعية config إلى `Program.cs` التي تقول للتطبيق أن يقبل اسم م თავი لرمز XSRF. هذا يتم عن طريق إضافة الرمز التالي في `Program.cs`:

```csharp
services.AddAntiforgery(options =>
{
    options.HeaderName = "X-CSRF-TOKEN";
});
```

هذا يخبر التطبيق أن يبحث عن `X-CSRF-TOKEN` عنوان عندما ي Validate the XSRF token.

### إضافة رمز XSRF لAPI البحث

نحتاج أيضاً إلى إضافة خاصية على الAPI `[ValidateAntiForgeryToken]` هذا يفرض استخدام هذه الرموز

## إضافة رمز XSRF إلى صندوق البحث

في صندوق البحث, نحتاج أن نضيف الرموز XSRF إلى الបឋមក. نضيف أولاً العلامة لإنتاج الرموز

```razor
<div x-data="window.mostlylucid.typeahead()" class="relative" id="searchelement"  x-on:click.outside="results = []">
    @Html.AntiForgeryToken()
```

ثم نضيف الرموز إلى العناوين في JavaScript:

```javascript
    let token = document.querySelector('#searchelement input[name="__RequestVerificationToken"]').value;
console.log(token);
            fetch(`/api/search/${encodeURIComponent(this.query)}`, { // Fixed the backtick and closing bracket
                method: 'GET', // or 'POST' depending on your needs
                headers: {
                    'Content-Type': 'application/json',
                    'X-CSRF-TOKEN': token // Attach the AntiForgery token in the headers
                }
            })
                .then(response => response.json())
                .then(data => {
                    this.results = data;
                    this.highlightedIndex = -1; // Reset index on new search
                });

```

كما ترون هذا يحصل على قيمة الرموز من حقل الإدخال ويضيفها إلى الرؤوس

## في الختام

إنه بسيط نسبياً لإضافة حماية XSRF إلى JavaScript الخاص بك.