Javascript 攻击者能否欺骗AJAX/POST请求?

Javascript 攻击者能否欺骗AJAX/POST请求?,javascript,php,ajax,Javascript,Php,Ajax,我是网络开发新手,请原谅我 在我正在设计的网站上(在Ubuntu 16.04 VPS上使用LAMP从头开始),我创建了一个管理页面,在那里我可以验证新用户、帖子等。我创建了两个简单的AJAX函数,这样当我单击一个按钮时,一篇帖子在数据库中被批准或删除 我的问题是,首先,如果我的大部分管理级PHP脚本(delete_post.PHP,等等)都在公共的html/PHP目录中——这是一个看起来很糟糕的想法吗?解决这个问题的唯一方法是将PHP包含用于这些脚本并将它们保存在更高的目录中吗?用户是否可以伪造

我是网络开发新手,请原谅我

在我正在设计的网站上(在Ubuntu 16.04 VPS上使用LAMP从头开始),我创建了一个管理页面,在那里我可以验证新用户、帖子等。我创建了两个简单的AJAX函数,这样当我单击一个按钮时,一篇帖子在数据库中被批准或删除

我的问题是,首先,如果我的大部分管理级PHP脚本(delete_post.PHP,等等)都在公共的html/PHP目录中——这是一个看起来很糟糕的想法吗?解决这个问题的唯一方法是将PHP包含用于这些脚本并将它们保存在更高的目录中吗?用户是否可以伪造对这些脚本的POST请求


其次,除了第一个问题,我已经创建了一些管理级别的AJAX函数来管理帖子,我想知道它们是否也容易受到攻击。例如,在我的管理页面上,我创建了一些按钮,以便我可以轻松地验证帖子或将其从数据库中删除。只有当用户出现在管理员列表中时,JavaScript才包括在服务器端;然而,考虑到我最近对JavaScript注入的了解,用户是否可能编写自己的伪造AJAX请求?

是的,他们很容易受到攻击。你永远不要认为POST请求比一个查询更安全,因为恶意用户编辑它们是微不足道的。使用令牌和\或会话对象保护数据

是的,有一些工具允许开发人员测试请求和ajax调用。其中一位是著名的“邮差”

浏览器设置原点标头,用户无法覆盖此值,但恶意用户可以手工创建一个curl请求,手动设置原点标头


我的建议是不要使用CORS,而是使用cookiesOAuth令牌来服务受保护的数据

请求可以来自任何地方。你无法知道谁发送了请求/为什么。是的。任何东西都可能被欺骗。对您来说,好消息是,您拥有的用于验证用户是否为管理员的cookie/会话数据将与AJAX请求一起发送,因此很容易看出管理员是发送AJAX请求的人,只需对管理区域中的任何其他HTTP请求执行相同的检查即可。当用户是ad admin时,JS仅包含在页面内容中这一事实与此无关,因为服务器仍将响应对AJAX端点URL的请求。也就是说,在非管理员用户和管理功能之间唯一的一点就是一个文件名,这个文件名很容易猜出来。这通常被称为“默默无闻的安全”,从来都不是一个好主意。在发出请求时,始终在服务器端执行身份验证。