我正在使用App Services
在Azure上运行REST-ful API(应用程序)。特别是,我使用Flask
编写API。我可以使用CSRF
来“保护” CORS
,以防app = Flask(__name__)
CORS(app, resources={r'/api/v1/*': {'origins': 'https://my-angular-app.azurewebsites.net'}})
。
https://my-angular-app.azurewebsites.net
请注意,我的意图仅是允许域https://my-rest-app.azurewebsites.net/api/v1/test
(这是Angular应用程序)中的XHR。
但是,我仍然可以使用浏览器(无论是否隐身)或Postman来访问REST端点(例如Login with Azure Active Directory
)。邮递员工具不是浏览器,因此应具有观察到的作用。由于浏览器不是一个使用XHR访问REST-ful API的域,因此,通过直接键入已知的终结点,我仍然可以访问资源。
我尝试使用401 Unauthorized
在REST应用程序上应用身份验证/授权。这种方法确实“保护”了外部人员免于直接访问REST端点,但是,它也阻止了Angular应用程序制作XHR(我得到了%.txt: %.in
@echo some-command $(SOME_OPTIONS) $@ $<
compile: $(outputs)
upgrade: SOME_OPTIONS:=whatever
upgrade: compile
)。
关于如何保护REST应用程序不受“外部人员”影响的任何想法?我可以想象多个位置(例如Angular,Flask,Azure等)中的“修复程序”,但不确定合理的方法。