昭通公司做网站,地推扫码平台,温州建设信息网站,热卖平台网站怎么做GraphQL概述
GraphQL是一种查询语言#xff0c;用于API设计和数据交互#xff0c;不仅仅用于查询数据库。GraphQL 允许客户端在一个请求中明确地指定需要的数据#xff0c;并返回预期的结果#xff1b;并且将数据查询和数据修改分离开#xff0c;大大增加灵活性。GraphQL…GraphQL概述
GraphQL是一种查询语言用于API设计和数据交互不仅仅用于查询数据库。GraphQL 允许客户端在一个请求中明确地指定需要的数据并返回预期的结果并且将数据查询和数据修改分离开大大增加灵活性。GraphQL正在迅猛发展但也存在着一些安全问题。 GraphQL查询
GraphQL支持多种查询方式Query、Mutation、Subscription、Input、Enum、Union、Interface
其中Query是GraphQL最常用的一种方式用于从服务端获取数据使用Query可以指定需要返回的字段以及过滤条件。
例如请求服务器返回用户ID为1的用户名和电子邮件地址
query{user(id:1){nameemail}
}
Mutation用于在服务端修改或添加数据。
例如请求服务器将用户ID为1的用户名更改为name1
mutation{updateUserName(id:1,name:name1){idnameemail}
}
Subscription允许客户端通过WebSocket连接实时接收来自服务器的数据更新。比如可以应用于在线聊天等。
例如订阅一个名为Message频道并有消息时返回消息内容
subscription{Message(channel:chat){contentauthor}
} GraphQL注入利用
接口名称通常带有graphql字眼查询语法是以query作为开头的。
存在GraphQL注入时可以进行越权查询敏感数据等操作比如ssrf利用。
比如
POST /graphql HTTP/1.1
Host: graphqlapp.herokuapp.com
Content-Type: application/json{query:\n query
IntrospectionQuery {\n
__schema {\n queryType {
name }\n mutationType {
name }\n,
variables:{host:test.com,port:80
}
}
这里就可以利用ssrf。利用host:xx.dnslog.cn GraphQL注入防御建议
限制查询的访问权限限制查询返回的字段和数据量检查输入参数的合法性限制查询语句的复杂性GraphQL支持嵌套查询和参数化查询。