本节包括的所有内容均与源代码无关,但对所创建产品的安全性仍然至关重要。因为本节涉及的问题与源代码没有直接关系,所以我们将它与其他章节分开。
HTTP
,则 HTTP Listener Connector 不会对其通信进行加密。这会使数据面临未经授权的访问、篡改和潜在的盗用风险。listener-connection
) 的 protocol
设置为 HTTP
。因此,与 HTTP Listener 的连接是不安全的。
<http:listener-config name="http_listener_config">
<http:listener-connection host="example.com" port="8080" protocol="HTTP">
...
</http:listener-connection>
</http:listener-config>
tls:context
元素定义了一组 TLS 连接配置。在这些配置中,tls:trust-store
元素指定了一个文件,其中包含来自受信任的证书颁发机构的证书,客户端使用这些证书来验证服务器提供的证书。默认情况下,Mule 运行时引擎会为每个 TLS 连接验证服务器证书。tls:trust-store
元素的 insecure
属性值为 true
,则服务器证书不经验证即被接受。insecure
属性设置为 true
。因此,Mule 运行时引擎不会验证任何与名为 demoTlsContext
的 TLS 上下文的连接的服务器证书。此类连接易受到中间人攻击。
...
<tls:context name="demoTlsContext">
...
<tls:trust-store ... insecure="true" ... />
...
<tls:context/>
...
security
要求和目标 servers
定义将始终覆盖相应的全局设置。 security
要求和目标 servers
定义将始终覆盖相应的全局设置。 security
定义。security
定义可能使攻击者能够与敏感的 API 端点进行交互,并允许他们执行应仅限于具有显式权限的特定用户帐户的操作。security
定义。实现此规范的 API 可能容易受到对敏感操作的未经授权或未经身份验证的访问。
{
"openapi" : "3.0.3",
"info" : {
"title" : "My API",
"version" : "1.0.0"
},
"servers" : [ {
"url" : "/"
} ],
"security" : [],
...
}
security
定义。security
定义可能使攻击者能够与敏感的 API 端点进行交互,并允许他们执行应仅限于具有显式权限的特定用户帐户的操作。security
定义。实现此规范的 API 可能容易受到对敏感操作的未经授权或未经身份验证的访问。
openapi: 3.0.3
info:
title: My API
version: 1.0.0
security:
security
定义。security
定义的操作可能使攻击者能够与敏感的 API 端点进行交互,并允许他们执行应仅限于具有显式权限的特定用户帐户的操作。security
定义。这会覆盖全局定义的安全要求,并使 createUsers
操作容易受到未经授权和未经身份验证的访问。
{
"openapi": "3.0.0",
"info": {
...
},
"paths": {
"/users": {
"post": {
"security": [],
"summary": "Create a user",
"operationId": "createUsers",
...
}
...
}
}
security
定义。security
定义的操作可能使攻击者能够与敏感的 API 端点进行交互,并允许他们执行应仅限于具有显式权限的特定用户帐户的操作。security
定义。这会覆盖全局定义的安全要求,并使 createUsers
操作容易受到未经授权和未经身份验证的访问。
openapi: 3.0.0
info:
...
paths:
/users:
post:
operationId: createUsers
security: []
responses:
'201':
...
security
定义。security
定义可能使攻击者能够与敏感的 API 端点进行交互,并允许他们执行应仅限于具有显式权限的特定用户帐户的操作。security
定义。实现此规范的 API 可能容易受到对敏感操作的未经授权或未经身份验证的访问。
{
"openapi" : "3.0.3",
"info" : {
"title" : "My API",
"version" : "1.0.0"
},
"servers" : [ {
"url" : "https://example.org"
} ],
...
}
security
定义。security
定义可能使攻击者能够与敏感的 API 端点进行交互,并允许他们执行应仅限于具有显式权限的特定用户帐户的操作。security
定义。实现此规范的 API 可能容易受到对敏感操作的未经授权或未经身份验证的访问。
openapi: 3.0.3
info:
title: My API
version: 1.0.0
...
security
定义。security
定义的操作可能使攻击者能够与敏感的 API 端点进行交互,并允许他们执行应仅限于具有显式权限的特定用户帐户的操作。security
定义。此外,如果没有全局 security
定义,则 createUsers
操作容易受到未经授权和未经身份验证的访问。
{
"openapi": "3.0.0",
"info": {
...
},
"paths": {
"/users": {
"post": {
"summary": "Create a user",
"operationId": "createUsers",
...
}
...
}
}
security
定义。security
定义的操作可能使攻击者能够与敏感的 API 端点进行交互,并允许他们执行应仅限于具有显式权限的特定用户帐户的操作。security
定义。此外,如果没有全局 security
定义,则 createUsers
操作容易受到未经授权和未经身份验证的访问。
openapi: 3.0.0
info:
...
paths:
/users:
post:
operationId: createUsers
responses:
'201':
...
securitySchemes
定义。securitySchemes
定义指定了可以全局使用或由特定 API 操作使用的安全机制。securitySchemes
定义通常在可重用的 components
对象下指定并被全局引用或由特定操作引用以指示交互的安全要求。securitySchemes
定义。
{
"openapi" : "3.0.3",
"info" : {
"title" : "My API",
"version" : "1.0.0"
},
"components": {
"schemas": {
"GeneralError": {
"type": "object",
"properties": {
...
}
}
}
securitySchemes
定义。securitySchemes
定义指定了可以全局使用或由特定 API 操作使用的安全机制。securitySchemes
定义通常在可重用的 components
对象下指定并被全局引用或由特定操作引用以指示交互的安全要求。securitySchemes
定义。
openapi: 3.0.3
info:
title: My API
version: 1.0.0
components:
schemas:
GeneralError:
type: object
properties:
...
security
定义中定义的可选安全要求条目可能使攻击者能够与敏感的 API 端点进行交互,并允许他们执行应仅限于具有显式权限的特定用户帐户的操作。{}
项目声明具有可选安全性的全局 security
定义。实现此规范的 API 可能容易受到对敏感操作的未经授权或未经身份验证的访问。
{
"openapi" : "3.0.3",
"info" : {
"title" : "My API",
"version" : "1.0.0"
},
"servers" : [ {
"url" : "/"
} ],
"security" : [ {}, { "oauth_auth" : ["write","read" ]} ],
...
}
security
定义中定义的可选安全要求条目可能使攻击者能够与敏感的 API 端点进行交互,并允许他们执行应仅限于具有显式权限的特定用户帐户的操作。{}
项目声明具有可选安全性的全局 security
定义。实现此规范的 API 可能容易受到对敏感操作的未经授权或未经身份验证的访问。
openapi: 3.0.3
info:
title: My API
version: 1.0.0
security:
- {}
- oauth_auth:
- write:users
- read:users
security
定义中加入空对象 {}
,使安全性成为可选项。这会覆盖全局定义的安全要求,并使 createUsers
操作容易受到未经授权和未经身份验证的访问。
{
"openapi": "3.0.0",
"info": {
...
},
"paths": {
"/users": {
"post": {
"security": [
{},
{
"my_auth": [
"write:users"
]
}
],
"summary": "Create a user",
"operationId": "createUsers",
...
}
...
}
}
security
定义中加入空对象 {}
,使安全性成为可选项。这会覆盖全局定义的安全要求,并使 createUsers
操作容易受到未经授权和未经身份验证的访问。
openapi: 3.0.0
info:
...
paths:
/users:
post:
operationId: createUsers
security:
- {}
- oauth_auth:
- write:users
- read:users
responses:
'201':
...