我使用AJAX的,我派人程序服务器的NodeJS的参数发送POST。在这个特定的情况下,用户名和代码。
这POST调用来request.GET中执行使用这两个参数的过程的Web服务。
例如
app.post('url/:username/:code', function(req,res,next){
var procedure = 'EXECUTE procedureName'+req.params.code;
request.get('myWslink/myService.asmx/service?
callback=&userName='+req.params.username+'&procedureName='+procedure, function(){});
});
前端用户无法看到我的web服务的URL,我的网址request.GET中或我的过程名,但他仍然可以看到正在发送的参数(用户名,密码) 他能改变这些参数使他能够执行他不应该执行的程序。
他还可以调用一个POST请求一堆次,并用一堆垃圾填满的数据库,如果它是一个插入过程。
保护自己免受这些攻击的最佳方法是什么?
最好的办法是不动态传递过程的名称来执行。至少你应该使用一些加密来混淆。 –