国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何通過數(shù)據(jù)驗證防止 Web API 攻擊 - Web API 安全指南

這篇具有很好參考價值的文章主要介紹了如何通過數(shù)據(jù)驗證防止 Web API 攻擊 - Web API 安全指南。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

充分的數(shù)據(jù)保護和用戶保密是網(wǎng)頁開發(fā)者的主要責(zé)任。因此,在構(gòu)建 API 終端時,確保最高可能的安全性至關(guān)重要。

應(yīng)用程序安全是客戶端和服務(wù)器開發(fā)者共同的責(zé)任,一方的疏忽可能會造成災(zāi)難性后果。統(tǒng)計數(shù)據(jù)顯示,2023 年的數(shù)據(jù)泄露導(dǎo)致全球超過 800 萬個數(shù)據(jù)記錄暴露。

在本文中,我將重點介紹 API 安全的關(guān)鍵領(lǐng)域,其中包括數(shù)據(jù)驗證。這個概念對幫助您保護 API 免受通過惡意用戶數(shù)據(jù)進行的網(wǎng)絡(luò)攻擊非常重要。這個教程非常適合所有后端開發(fā)者,無論經(jīng)驗多少。

為了能夠跟隨本教程,這里有一些先決條件:

  • Node.js 知識
  • npm 和包安裝知識

有了這些準(zhǔn)備,讓我們開始吧。

(本文內(nèi)容參考:java567.com)文章來源地址http://www.zghlxwxcb.cn/news/detail-851917.html

數(shù)據(jù)驗證是如何工作的?

首先,什么是數(shù)據(jù)驗證?數(shù)據(jù)驗證簡單來說就是確保來自外部來源的數(shù)據(jù)在進行進一步數(shù)據(jù)處理之前的準(zhǔn)確性和可靠性。

這是 Web API 安全的關(guān)鍵組成部分,因為它對于防止網(wǎng)絡(luò)注入攻擊、SQL 攻擊和 NoSQL 攻擊至關(guān)重要。要了解更多信息,您可以查看此鏈接。

請注意,數(shù)據(jù)驗證不僅僅需要在以下后端操作中進行:

  • 用戶登錄和注冊
  • 響應(yīng)查詢
  • 更新服務(wù)器數(shù)據(jù)庫

所有這些都可能被惡意黑客利用,以獲取對服務(wù)器數(shù)據(jù)庫的訪問權(quán)限,并獲取敏感用戶詳細(xì)信息,甚至通過格式化整個數(shù)據(jù)庫來制造混亂。

流行的數(shù)據(jù)驗證工具

到目前為止,有很多工具可以幫助程序員在 API 開發(fā)中實現(xiàn)高效的數(shù)據(jù)驗證。

它們幫助您避免重新發(fā)明驗證數(shù)據(jù)的長正則表達式代碼的輪子。它們提供了大量功能,包括錯誤處理和驗證定制功能。

其中一些工具包括:

  • Joi
  • Zod
  • Yup
  • AJv
  • Valibot
  • Validator.js
  • Superstruct

為了進一步闡明這些工具,我們將比較上述最受歡迎的數(shù)據(jù)驗證工具中的一些。

數(shù)據(jù)驗證工具的優(yōu)缺點

為了進一步讓您了解這些 JavaScript 驗證工具,我將重點介紹其中三種流行的 JavaScript 驗證工具的一些優(yōu)缺點。

Joi

優(yōu)點
  • 擁有強大的、龐大的用戶社區(qū)和開發(fā)支持
  • 具有處理復(fù)雜驗證的內(nèi)置功能
缺點
  • 其語法相當(dāng)冗長

Zod

優(yōu)點
  • 與 TypeScript 項目輕松兼容
  • 具有高效的錯誤處理能力
缺點
  • 不支持異步驗證。

Yup

優(yōu)點
  • 主要使用聲明性語法設(shè)置其驗證工具,從而賦予其簡單性
  • 具有可比較的快速性能。
缺點
  • 不提供自定義功能
  • 其處理復(fù)雜驗證的能力有限

為了本教程的目的,我們將使用 Joi 作為我們的數(shù)據(jù)驗證工具。

簡介 Joi

Joi 是一個簡單高效的基于 JavaScript 的數(shù)據(jù)驗證工具,它基于模式類型配置。

它具有用于驗證各種形式數(shù)據(jù)出現(xiàn)的內(nèi)置功能,但不限于布爾值、字符串、函數(shù)和區(qū)間。它還可以處理復(fù)雜的驗證操作。

此外,它提供了最小化的緩存功能。有關(guān)該工具的更多信息可以在此處找到。

如何設(shè)置 Joi

在本節(jié)中,我們將在本地環(huán)境中設(shè)置 Joi。要安裝 Joi,請通過命令行導(dǎo)航到代碼文件夾,并運行以下命令:

npm i joi

應(yīng)該顯示安裝成功的消息。完成后,我們可以演示在我們的演示 API 中使用 Joi 驗證用戶注冊的強大功能。

演示項目

在這個項目中,您將使用 Joi 來驗證從客戶端接收到的用于在服務(wù)器上注冊的輸入??梢栽谶@里找到用于 Node.js 應(yīng)用程序的用戶注冊功能的默認(rèn)代碼。

繼續(xù)將已安裝的 Joi 包導(dǎo)入到您的代碼中:

const Joi = require("joi");

在編寫我們的注冊控制器之前,我們將在代碼文件中初始化 Joi 庫:

const SignUpSchema = Joi.object({});

在這個項目中,我們將驗證從客戶端接收到的 email、password 和 username 參數(shù)。

const SignUpSchema = Joi.object({
    email: Joi.string().email({
        minDomainSegments: 2,
        tlds: {
            allow: ['com', 'net']
        }
    }),
    username: Joi.string().alphanum().min(3).max(15).required(),
    password: Joi.string().min(8).required()
});

email 參數(shù)對象確保電子郵件地址是一個字符串,并且域站點限制為 .com 和 .net,不允許其他形式的域。

對于 username 參數(shù),它確保它是一個包含字母和數(shù)字的字符串,最小字符數(shù)為 3,最大字符數(shù)為 15。required 函數(shù)確保必須滿足這些條件,否則整個請求將無法通過驗證。

password 參數(shù)確保提供的密碼是以字符串格式提供的,最小字符數(shù)為 8,并且也是必需的。

要將其應(yīng)用到我們的端點中,我們將其包含在控制器函數(shù)中:

const { error, value } = SignUpSchema.validate(req.body, { abortEarly: false });
if (error) {
    res.status(400).json(error.details);
    return;
}

此函數(shù)在將用戶詳細(xì)信息插入數(shù)據(jù)庫之前執(zhí)行。模式嘗試驗證接收到的輸入,然后如果成功驗證,繼續(xù)到數(shù)據(jù)庫。

abortEarly 功能包括以允許評估所有參數(shù)。如果有任何錯誤,所有錯誤都將顯示出來。

以上內(nèi)容也可以在登錄控制器函數(shù)中復(fù)制。您還可以查看 Joi 使用其他復(fù)雜驗證選項的文檔。

項目的最終代碼如下所示:

const jwt = require("jsonwebtoken");
const userSchema = require("../Schema/User");
const Joi = require("joi");
const bcrypt = require("bcrypt");
const { createNewColumn, checkRecordsExists, insertRecord } = require('../utils/sqlSchemaFunction');

const generateAccessToken = (use) => {
    return jwt.sign({ userID: use }, process.env.JWT, { expiresIn: "1d" });
}

const SignUpSchema = Joi.object({
    email: Joi.string().email({ minDomainSegments: 2, tlds: { allow: ['com', 'net'] } }),
    username: Joi.string().alphanum().min(3).max(15).required(),
    password: Joi.string().min(8).required()
});

const loginSchema = Joi.object({
    email: Joi.string().email({ minDomainSegments: 2, tlds: { allow: ['com', 'net'] } }),
    password: Joi.string().min(8).required()
});

const register = async (req, res) => {
    const email = req.body.email;
    const password = req.body.password;

    if (!email || !password) {
        res.status(400).json("Please supply the email or password");
        return; 
    }

    const { error, value } = SignUpSchema.validate(req.body, { abortEarly: false });
    if (error) {
        res.status(400).json(error.details);
        return;
    }

    const salt = await bcrypt.genSalt(10);
    const hashedPassword = await bcrypt.hash(password, salt);
    const user = {
        username: req.body.username,
        email: email,
        password: hashedPassword
    };

    try {
        const userAlreadyExists = await checkRecordsExists("users", "email", email);
        if (userAlreadyExists) {
            res.status(400).json("Email must be unique");
        } else {
            await insertRecord("users", user);
            res.status(200).json("User created successfully");
        }
    } catch (err) {
        res.status(500).json({ err: err.message });
    }
};

module.exports = { register };

如何通過數(shù)據(jù)驗證防止 Web API 攻擊 - Web API 安全指南,前端,安全,后端,node.js

在 Postman 中進行 API 測試

確保代碼遵循我們定義的模式,結(jié)果是成功執(zhí)行的。

結(jié)論

至此,教程已經(jīng)結(jié)束。希望您已經(jīng)了解了數(shù)據(jù)驗證、各種數(shù)據(jù)驗證工具以及數(shù)據(jù)驗證最佳實踐。

(本文內(nèi)容參考:java567.com)

到了這里,關(guān)于如何通過數(shù)據(jù)驗證防止 Web API 攻擊 - Web API 安全指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 學(xué)習(xí)前端安全:防止常見的Web攻擊和漏洞:簡單而有效

    作者:禪與計算機程序設(shè)計藝術(shù) 安全是所有Web開發(fā)人員都需要關(guān)注的一個重要方面,因為信息在網(wǎng)絡(luò)上傳輸時都存在各種隱患。攻擊者利用這些隱患對我們的網(wǎng)站造成破壞,甚至導(dǎo)致服務(wù)器被入侵。因此,在Web開發(fā)過程中,我們需要對安全問題保持警惕并采取必要的措施保障

    2024年02月11日
    瀏覽(18)
  • 高防IP如何防止爬蟲和Web攻擊?

    高防IP如何防止爬蟲和Web攻擊?隨著互聯(lián)網(wǎng)的發(fā)展,各種類型的網(wǎng)絡(luò)攻擊和爬蟲行為也越來越多。為了保護網(wǎng)站的安全和穩(wěn)定性,許多網(wǎng)站都采用了高防IP來防止爬蟲和Web攻擊。那么高防IP是如何防止爬蟲和Web攻擊的呢?下面我們來詳細(xì)了解一下。 1. 防止爬蟲 爬蟲是指通過程

    2024年02月11日
    瀏覽(16)
  • 如何防止網(wǎng)絡(luò)安全攻擊

    為了防止網(wǎng)絡(luò)安全攻擊,以下是一些常見的防御措施和建議: 使用強密碼:確保使用足夠長、復(fù)雜且隨機的密碼,并定期更改密碼。不要在多個賬戶中重復(fù)使用相同的密碼。 更新和修補軟件:定期更新操作系統(tǒng)、應(yīng)用程序和安全補丁,以及及時修復(fù)安全漏洞,以防止攻擊者

    2024年02月09日
    瀏覽(40)
  • 前端安全系列(一):如何防止XSS攻擊?

    前端安全系列(一):如何防止XSS攻擊?

    隨著互聯(lián)網(wǎng)的高速發(fā)展,信息安全問題已經(jīng)成為企業(yè)最為關(guān)注的焦點之一,而前端又是引發(fā)企業(yè)安全問題的高危據(jù)點。在移動互聯(lián)網(wǎng)時代,前端人員除了傳統(tǒng)的 XSS、CSRF 等安全問題之外,又時常遭遇網(wǎng)絡(luò)劫持、非法調(diào)用 Hybrid API 等新型安全問題。當(dāng)然,瀏覽器自身也在不斷在

    2024年02月02日
    瀏覽(38)
  • https 是否真的安全,https攻擊該如何防護,https可以被抓包嗎?如何防止呢?

    簡單來說, https 是 http + ssl,對 http 通信內(nèi)容進行加密,是HTTP的安全版,是使用TLS/SSL加密的HTTP協(xié)議 Https的作用: 內(nèi)容加密 建立一個信息安全通道,來保證數(shù)據(jù)傳輸?shù)陌踩?身份認(rèn)證 確認(rèn)網(wǎng)站的真實性 數(shù)據(jù)完整性 防止內(nèi)容被第三方冒充或者篡改 其次什么事SSL證書 SSL 由

    2024年02月03日
    瀏覽(24)
  • 騰訊EdgeOne產(chǎn)品測評體驗——多重攻擊實戰(zhàn)驗證安全壁壘:DDoS攻擊|CC壓測|Web漏洞掃描|SQL注入

    騰訊EdgeOne產(chǎn)品測評體驗——多重攻擊實戰(zhàn)驗證安全壁壘:DDoS攻擊|CC壓測|Web漏洞掃描|SQL注入

    ??你好呀!我是 是Yu欸 ?? 2024每日百字篆刻時光,感謝你的陪伴與支持 ~ ?? 歡迎一起踏上探險之旅,挖掘無限可能,共同成長! 在一個陽光明媚的下午,我收到了一個特別的邀請:對騰訊云EdgeOne(簡稱EO),一款致力于提速和加強網(wǎng)站安全的邊緣安全加速平臺,進行深度

    2024年04月17日
    瀏覽(34)
  • 【web安全】XSS攻擊(跨站腳本攻擊)如何防范與實現(xiàn)

    目錄 XSS介紹 防范要點 實現(xiàn)方法 XSS攻擊(跨站腳本攻擊)是一種常見的Web安全漏洞,攻擊者在Web頁面中插入惡意腳本代碼,并在受害人訪問該頁面時執(zhí)行腳本代碼,從而獲取用戶敏感信息、操作受害人賬號或篡改頁面內(nèi)容等不當(dāng)行為。XSS攻擊可以通過輸入表單、搜索框、評論

    2024年02月12日
    瀏覽(21)
  • 如何進行安全可靠的API身份驗證?

    如何進行安全可靠的API身份驗證?

    前言: 在開發(fā)安全的 REST API 時,身份驗證是必不可少的。你可以將你的應(yīng)用程序想象成一個聚會,那么身份驗證就像一扇門,決定哪些客人可以進入——或者更準(zhǔn)確地說,哪些請求可以進出。 接下來我將介紹四種常用的身份驗證方法,包括 API密鑰、OAuth 2.0、HTTP身份驗證方

    2024年02月08日
    瀏覽(20)
  • 電商系統(tǒng)中API接口防止參數(shù)篡改和重放攻擊(小程序/APP)

    電商系統(tǒng)中API接口防止參數(shù)篡改和重放攻擊(小程序/APP)

    說明:目前所有的系統(tǒng)架構(gòu)都是采用前后端分離的系統(tǒng)架構(gòu),那么就不可能避免的需要服務(wù)對外提供API,那么如何保證對外的API的安全呢? 即 生鮮電商中API接口防止參數(shù)篡改和重放攻擊 目錄 1. 什么是API參數(shù)篡改? 說明:API參數(shù)篡改就是惡意人通過抓包的方式獲取到請求的接

    2024年02月03日
    瀏覽(19)
  • MySQL 安全及防止 SQL 注入攻擊

    如果通過網(wǎng)頁獲取用戶輸入的數(shù)據(jù)并將其插入? MySQL ?數(shù)據(jù)庫,那么就有可能發(fā)生? SQL 注入攻擊的安全問題 作為研發(fā),有一條鐵律需要記住,那就是 永遠不要相信用戶的數(shù)據(jù),哪怕他一再承諾是安全的 SQL ?注入,就是通過把? SQL ?命令插入到? Web ?表單遞交或輸入域名或頁

    2024年02月02日
    瀏覽(41)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包