【发布时间】:2016-11-17 11:19:09
【问题描述】:
这是设置。
我正在使用 ajax 发送一个 POST,其中我将过程的参数发送到 nodejs 服务器。在这种特殊情况下,用户名和代码。
这个 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(){});
});
前端用户看不到我的 webservice url、我的 request.get url 或我的过程名称,但他仍然可以看到正在发送的参数(用户名、代码) 他可以更改这些参数,使他能够执行他不应该执行的程序。
如果是插入过程,他也可以多次调用 POST 请求,然后用一堆垃圾填满数据库。
保护自己免受这些攻击的最佳方法是什么?
【问题讨论】:
-
最好的方法是不动态传递要执行的过程的名称。至少你应该用一些加密来混淆。
标签: sql-server node.js security stored-procedures sql-injection