Query: {
adminResolver: async (parent, args, context) => {
if(!context.user || !context.roles.includes("admin")) throw new Error("Permission denied!");

...

return data;
},
},
};

2. 輸入驗證和規(guī)范化

過去,開發(fā)人員會在前端生成 SQL 查詢,并將其發(fā)送到 API 以從 SQL 數據庫中獲取數據;因此,SQL 注入應運而生。攻擊者可以編寫 SQL 并將其發(fā)送到 API,API 會執(zhí)行該查詢,而無需進一步詢問。

雖然沒有人阻止 GraphQL API 開發(fā)人員創(chuàng)建接受在服務器上盲目執(zhí)行的 SQL 字符串的類型,但這種情況很少見。

但接受來自客戶端的數據始終存在風險。這就是為什么在獲取任何數據之前,所有輸入都應經過驗證和規(guī)范化。特別是自定義標量由于它們不進行默認驗證,因此很容易受到這種威脅。

3. 自省限制

GraphQL 為其 API 使用者提供了便捷的自省功能,允許 GraphQL 客戶端詢問 API 提供哪些類型的數據。這很棒,因為現在客戶端開發(fā)人員不必查看文檔,而是可以直接詢問 API 服務器有哪些數據可用。

但如果不嚴格控制,內省也可能被濫用。例如,當提供管理功能的 GraphQL 類型可以被普通用戶發(fā)現和使用時。

GraphQL API 創(chuàng)建者必須使用嚴格的授權方案進行自省,以使攻擊者更難找到 API 漏洞。如果外部開發(fā)人員不使用您的 API,在生產環(huán)境中禁用自省功能也是一個好主意。

例如,Apollo 服務器允許使用簡單的配置標志禁用自省:

const IS_PRODUCTION = process.env.ENVIRONMENT === "production";

const server = new ApolloServer({
typeDefs,
resolvers,
introspection: !IS_PRODUCTION,
});

server.listen();

4. 查詢限制

GraphQL 查詢?yōu)?API 消費者提供了很大的靈活性,只需一個請求就可以準確獲取他們想要的數據,但此功能也可能以多種方式被濫用。

惡意客戶端可能會出于各種原因創(chuàng)建非常深入、復雜或通常長時間運行的查詢。如果這些攻擊者發(fā)現導致大量計算的極端情況或利用N+1 查詢問題,它們會導致 API 超載并嚴重降低其他客戶端的性能。

這就是為什么 GraphQL API 應該將查詢執(zhí)行時間限制在合理的最大值。更好的是,實現此目標的另一種方法是限制查詢深度或復雜性,從而使執(zhí)行常見的 GraphQL DDoS 攻擊變得更加困難,這些攻擊往往使用遞歸和深度查詢來破壞服務。

5. 上游錯誤隱藏

如前所述,GraphQL API 不是數據存儲機制;這意味著它使用上游服務(如數據庫或其他 API)來獲取實際數據。這些服務也可能出現錯誤。如果您將上游服務的錯誤傳遞給客戶端,攻擊者可以利用它們來了解您的架構。

為了減輕這種威脅,您應該始終在將上游錯誤傳遞給客戶端之前對其進行處理;這樣,您可以隱藏獲取數據的服務,并禁止攻擊者利用這些服務可能存在的錯誤或安全漏洞。

我們來看下面的代碼示例:

const resolvers = {
Query: {
myResolver: async (parent, args, context) => {
try {
const data = await fetchFromRemoteDataSource();
return process(data);
} catch (upstreamError) {
const cleanError = analyzeUpstreamError(upstreamError);
throw cleanError;
}
},
},
};

解析器嘗試從遠程數據源獲取一些數據,但這可能會失敗。我們捕獲的錯誤來自遠程數據源,因此它可能包含有關數據源的信息。

我們需要分析錯誤并清除所有上游信息,然后再將其傳遞給客戶端。

確保 GraphQL API 的安全

GraphQL API 是改善前端團隊開發(fā)人員體驗的絕佳方式。它通過為客戶提供一種指定所需內容的方式來幫助優(yōu)化數據獲取。但這是以 API 架構的復雜性增加為代價的,這增加了 API 的攻擊面。

隨著GDPR和加拿大注冊會計師協(xié)會法律規(guī)定罰款高達數百萬美元,API 創(chuàng)建者比以往任何時候都更需要保持常見的 API 威脅在開發(fā) API 時要牢記這一點,并留意可能出現的 GraphQL 特定弱點。

原文地址:https://www.moesif.com/blog/technical/security/5-Security-Tips-for-Your-GraphQL-API/

熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
3000+提示詞助力AI大模型
和專業(yè)工程師共享工作效率翻倍的秘密
熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
返回頂部
上一篇
面向開發(fā)人員的 8 大區(qū)塊鏈 API
下一篇
數字貨幣對沖策略源代碼介紹及FMZ平臺最新API
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
精久久久久久久久久久| 91超碰这里只有精品国产| 日韩一卡二卡三卡四卡| 亚洲欧洲成人精品av97| 成人黄色av网站在线| bt欧美亚洲午夜电影天堂| 日本视频中文字幕一区二区三区 | 91一区在线观看| 免费人成在线不卡| 中文字幕综合网| 精品国产电影一区二区| 欧美日韩在线免费视频| 91国内精品野花午夜精品| 日韩国产高清影视| 亚洲视频免费看| 国产精品麻豆欧美日韩ww| 欧美日韩免费高清一区色橹橹| 懂色中文一区二区在线播放| 成人免费毛片aaaaa**| 国产一区二区电影| 久久精品二区亚洲w码| 亚洲成av人片一区二区梦乃| 亚洲第一成人在线| 男人的j进女人的j一区| 亚洲444eee在线观看| 日韩高清在线电影| 国产精品自拍一区| av高清久久久| 欧美老女人在线| ㊣最新国产の精品bt伙计久久| 婷婷综合久久一区二区三区| 久久99精品久久只有精品| 国产精品白丝在线| 国产精品九色蝌蚪自拍| 亚洲午夜久久久久久久久电影院| 午夜欧美2019年伦理| 国产suv一区二区三区88区| 亚洲一级不卡视频| 成人18视频日本| 亚洲精品在线观| 国产原创一区二区三区| 日韩午夜av电影| 日韩电影在线看| 欧美自拍偷拍一区| 一区二区三区不卡视频在线观看| 久草这里只有精品视频| 欧美电影在线免费观看| 国产婷婷一区二区| 亚洲女性喷水在线观看一区| 最新国产精品久久精品| 韩国精品在线观看| 久久久久久久综合色一本| 国产精品国产自产拍高清av王其| 国内外成人在线| 欧美天天综合网| 久久精品国产免费看久久精品| 精品久久久久久久久久久久久久久| 免费观看日韩电影| 亚洲国产精品精华液ab| 色域天天综合网| 麻豆国产一区二区| 国产精品区一区二区三区| 欧洲色大大久久| 成人高清视频在线| 蜜乳av一区二区| 亚洲电影在线免费观看| 久久久久久黄色| 日韩欧美成人一区| 色综合久久久久| 国产高清成人在线| 国产又粗又猛又爽又黄91精品| 国产精品久久久久7777按摩| 精品国产三级电影在线观看| a级高清视频欧美日韩| 日韩国产高清在线| 亚洲一区二区三区四区在线免费观看 | www激情久久| 久久久久国产精品麻豆ai换脸| 不卡区在线中文字幕| 成人国产精品免费| 色婷婷av久久久久久久| 午夜精品久久久久久久久| 亚洲精品国产精华液| 亚洲乱码国产乱码精品精小说| 亚洲精品日韩综合观看成人91| 一区二区三区中文字幕电影| 国产精品入口麻豆原神| 偷偷要91色婷婷| 成人美女视频在线看| 99国产精品99久久久久久| 欧美精品在线一区二区三区| 欧美成人综合网站| 亚洲人成人一区二区在线观看| 亚洲成人av福利| 久久国产尿小便嘘嘘| 99精品一区二区三区| 欧美一区二区三区免费| 一区二区在线观看av| 黄页网站大全一区二区| 一本久久a久久免费精品不卡| 欧美一级免费大片| 亚洲国产视频一区二区| 国产自产高清不卡| 日韩精品在线看片z| 一级特黄大欧美久久久| 日本韩国一区二区三区| 国产精品欧美一级免费| 韩日精品视频一区| 欧美国产一区视频在线观看| 高清视频一区二区| 国产午夜精品美女毛片视频| 国产69精品久久99不卡| 久久久噜噜噜久久中文字幕色伊伊| 国产精品毛片久久久久久久| 久久99精品视频| 日本一区二区视频在线| 色婷婷激情久久| 亚洲va国产va欧美va观看| 欧美精品黑人性xxxx| 免费在线观看一区二区三区| 欧美精品一区二区三| 日韩高清一区二区| 国产精品成人免费| 91精品一区二区三区久久久久久| 国产综合色产在线精品| 亚洲色图一区二区| 国产色爱av资源综合区| 91在线观看污| 国产综合久久久久影院| 天天操天天综合网| 久久先锋影音av鲁色资源 | 国产成人av影院| 日韩高清国产一区在线| 亚洲最大色网站| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲一区在线电影| 亚洲美女屁股眼交| 亚洲免费毛片网站| 国产精品麻豆欧美日韩ww| 欧美成人免费网站| 国产精品久久久久久久久久免费看| 久久只精品国产| 久久蜜臀中文字幕| 亚洲欧美中日韩| 五月婷婷综合激情| 激情综合色播激情啊| 成人在线一区二区三区| 中文字幕一区二区三区四区| 精品理论电影在线观看| 东方欧美亚洲色图在线| 99国产精品视频免费观看| 久久9热精品视频| 亚洲午夜久久久久久久久电影网 | 欧美在线不卡一区| 日韩欧美亚洲国产精品字幕久久久| 欧美videofree性高清杂交| 26uuu精品一区二区| 亚洲视频在线观看三级| 日本免费在线视频不卡一不卡二| 极品瑜伽女神91| 欧美性欧美巨大黑白大战| 日韩一二在线观看| 成人av资源站| 欧美一级二级三级蜜桃| 欧美日韩高清影院| 欧美日韩在线直播| 国产精品亲子伦对白| 国产成人欧美日韩在线电影| 欧美性xxxxxx少妇| 日韩一区欧美一区| 色综合色综合色综合| 中文字幕乱码一区二区免费| 蜜桃av一区二区在线观看| 欧美少妇性性性| 中文字幕中文字幕在线一区| 亚洲国产精品久久人人爱蜜臀 | 亚洲精品午夜久久久| 91首页免费视频| 亚洲男人的天堂av| 欧美性视频一区二区三区| 一区二区三区久久| 在线播放亚洲一区| 成年人国产精品| 欧美久久久久久久久中文字幕| 国内精品伊人久久久久影院对白| 日韩一级黄色大片| gogo大胆日本视频一区| 亚洲午夜免费福利视频| 亚洲精品在线网站| 欧美性大战xxxxx久久久| 国内精品免费**视频| 亚洲激情中文1区| 久久久国产午夜精品| 91精品一区二区三区久久久久久| 国产成人精品1024| 九九**精品视频免费播放| 亚洲日本成人在线观看| 欧美激情在线一区二区三区| 久久久久久久综合日本| 337p日本欧洲亚洲大胆精品 |