English 中文(简体)
如何阻止外部网站的要求? (接AJAX号电话)
原标题:How to block external http requests? (securing AJAX calls)

我想利用这个员额更新数据库,不要让人们以人工的方式这样做,即只能通过美国宇宙航空研究开发机构在客户中这样做。 在这种情形下是否使用过一些众所周知的加密仪?

Say I m 发出GET申请,要求将新用户插入我的数据库site.com/adduser/<userid>。 有些人可能会通过发出假冒要求而使我的数据库过度泛滥。

最佳回答

不能避免在本案中提出伪造的要求,因为客户浏览器已经具备使申请成为可能所必需的一切;只是一个恶性用户想出如何向您提出任意要求的问题,甚至可能使用你的代码使申请更加容易。 你们不需要“加密骗局”,你只需要混淆,这只会使ging变得不方便,但并非不可能。

问题回答

It can be achieved.
Whenever you render a page which is supposed to make such request. Generate a random token and store it in session (for authenticated user) or database (in case this request is publicly allowed).
and instead of calling site.com/adduser/<userid> call site.com/adduser/<userid>/<token>
whenever you receive such request if the token is valid or not (from session or database)
In case token is correct, process the request and remove used token from session / db
In case token is incorrect, reject the request.

我并不真正需要限制对服务器的利用(尽管这是巨大的),但我 m想一个能够让服务器知道什么东西来自电灯,而不是用户用电灯伪造。

我们不能这样做。 它几乎是客户/服务器申请的根本问题之一。 为什么不工作: 您的客户可以向服务器认证自己,无论它带有秘密密码还是某种其他方法。 用户必须获得相关需要的信息(密码藏在某处或任何地方)。 但是,由于该软件在用户计算机上运行,因此他们也能够获取这一信息: 他们都需要看看源或双轨,或看望器和服务器之间的网络交通,最终将显示贵方认证的机制,并加以复制。 也许他们甚至照抄。 也许他们会写一个cl子,使你能够照亮重提(你们总是能够向 app发送假用户投入)。 但是,无论怎样,他们都拿到了所需的一切信息,而且他们也没有任何办法阻止他们这样做,也就阻止你们不要这样做。

Prevent Direct Access To File Called By ajax Function seems to address the question.

你可以(除了其他解决办法外,我确信)。

  • use session management (log in to create a session);
  • send a unique key to the client which needs to be returned before it expires (can t be re-used, and can t be stored for use later on);
  • and/or set headers as in the linked answer.

但是,如果人们尝试得力的话,任何东西都可能po。 唯一一个完全安全的制度是没有人能够进入的。

这个问题与CSRF一样,解决办法也一样:在AJAX的要求中,使用一个标语,由你自行储存的代谢物(或可以再生,例如,通过将参数作为钥匙加以加密),在这方面有某些可理解的说明,还有一个项目

它与任何其他网页一样运作:标识认证,核对参考资料。

解决办法是将黑线添加到亚克斯要求中。 而且,你应寻求基本认证,这并非唯一的保护者。 你们可以从你的一个雅氏页上追捕这些收入。

Ajax Call

function callit()
{
 if(window.XMLHttpRequest){xmlhttp=new XMLHttpRequest();}else{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
 xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4&&xmlhttp.status==200){document.getElementById( alp ).innerHTML=xmlhttp.responseText;}}
 xmlhttp.open("get", "call.asp", true);
 **xmlhttp.setRequestHeader("X-Requested-With","XMLHttpRequest");**
 xmlhttp.send();
}

PHP/ASP 页: 1

ASP

If Request.ServerVariables("HTTP_X-Requested-With") = "XMLHttpRequest" Then
  Do stuff
Else
  Kill it
End If

PHP

if( isset( $_SERVER[ HTTP_X_REQUESTED_WITH ] ) && ( $_SERVER[ HTTP_X_REQUESTED_WITH ] ==  XMLHttpRequest  ) )
{
 //Do stuff
} else {
 //Kill it
}

这是一些授权问题:只有经授权的请求才能产生新的用户。 因此,在接到这一请求时,你始终需要检查其是否来自授权创建新用户的客户。

现在,主要问题是如何决定批准哪些请求。 在大多数情况下,通过用户作用和(或)某些票价制度进行。 由于用户的作用,解决用户身份识别和用户认证等其他问题。 但是,如果这个问题已经解决,你可以很容易地把用户描绘成像Alice is an adminBob是固定用户,只有行政管理部门有权创建新的用户。





相关问题
ajax login using httpRequest?

I am trying to develop my login script to give feedback to the user if the login is valid or not. Basically if it isn t correct a div box will show saying its wrong, if its correct it will show its ...

Virtual Tour using sketch up, ajax, flash technologies

I want to know if there are existing technology that make your 3d models in sketch into virtual tours, using either Ajax or Flash for web presentation. If there s none, which will be a good approach ...

How can i update div continuously

I have asp.net application where i have a div which showing the value from other site. The value of that site is changing continuously. I want that my div will automatically update in some interval ...

热门标签