Technology sharing

Ante-finem colloquium quaestio 50 (Quae securitatis mensurae communes ante-finem CSRF impetus impedire possunt?)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Insert imaginem descriptionis hic
Ad impediendam Cross-Site Request Forgery (CSRF) impetus, commune securitatis mensurae sequentes ante finem evolutionis sumi possunt:

1. usus CSRF Thochen

Haec una ex communibus machinationibus defensionis adhibitis.

  • Generale Thochen: Post usoris tigna in, server temere, inaestimabile CSRF Thochen gignit et in parte servo reponit. Eodem tempore ad clientem per Set-Cookie caput mittitur et in usoris Cookie reponitur.

  • Forma embedded ThochenIn unaquaque HTML forma, quae praesidio indiget, agrum occultum adde (<input type="hidden">) , valorem suum CSRF ad Thochen legitur e crustulum positum.

  • VerifyToken : Cum forma proposita sit, tergum forma notitiarum et Thochen in crustulum accipiet (ob eandem originem consilium, navigatrum crustulum automatice mittet). Servus latus certificat num Thochen in forma consentaneum sit cum Thochen repositum in parte servo vel in Sessione. Si repugnent, petitio reiicitur.

2. HTTP Referer Quin et Origin Header

Etsi non omnino certum est quod Relator et Originem sollicitari possunt vel deesse, tamen uti mediis auxiliis in aliquibus missionibus potest.

  • Reprehendo Referer : Cognoscere Relator campum in HTTP petendi caput est ut petitio ab expectato nomine incipiatur. Attamen notandum est hanc methodum limitationes habere. Exempli gratia, in declivi rogatu ab HTTPS ad HTTP, Relator non mittendus est.

  • Reprehendo Origin Header: Similis cum Referer, Origin header informationes praebet de fonte rogationis, sed tantum missus est cum XMLHttpRequest vel Da API utens.

3 utere SameSite Quisque attributum

Illae crustulae quae accessum crucis non requirunt, attributum SameSite constitui possunt ad securitatem augendam.

  • SameSite = Lax: Crustulum tantum petitiones in eodem situ missas, partim contra CSRF protegens.
  • SameSite = Strict: Crustulae tantum intra eundem locum mittuntur et in eadem pagina navigant, ut firmius praesidium praebeant, sed functiones subdominalis expectata afficiant.
  • SameSite = nemo: Opus est utendum cum attributo Secure pro crustularum quae crucis-site ad exigentiis navigantium modernorum accommodanda sunt.

4. Custom petitionem header verificationem

Addere consuetudinem HTTP header ad AJAX petitionem (utX-Requested-With: XMLHttpRequest ) et tunc comprobandum esse et valorem huius capitis in calculonis servi. Quia JavaScript gratis caput XMLHttpRequest constituere potest, forma autem ordinaria submissionis non potest, hoc petitiones scriptorum initiatas discernere potest.

Sample code (CSRF Token implementation):

Servo latus (pseudocode):

// 生成并设置Token
function generateCsrfToken() {
    return crypto.randomBytes(32).toString('hex');
}

app.post('/login', (req, res) => {
    const token = generateCsrfToken();
    res.cookie('csrfToken', token, { httpOnly: true, secure: true, sameSite: 'strict' });
    // 存储token到session或其他存储机制
});

app.post('/submitForm', (req, res) => {
    if (req.body.csrfToken === req.cookies.csrfToken) {
        // 请求合法,处理逻辑...
    } else {
        // CSRF攻击检测,拒绝请求
        res.status(403).send('Forbidden');
    }
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

Ante-finem HTML:

<form action="/submitForm" method="POST">
    <!-- 其他表单字段... -->
    <input type="hidden" name="csrfToken" value="{{csrfToken}}">
    <button type="submit">Submit</button>
</form>
  • 1
  • 2
  • 3
  • 4
  • 5

Quaeso nota quod superius codicem tantum exemplum est, et applicatio actualis necessario aptanda est secundum compaginem et linguarum usum.