好的,今天我在构建的系统上有很好的经验。有些人"黑客攻击"一切,并说这是一个ajax问题。这就是他对我说的话:
你依赖于AJAX
当我有权访问用户的浏览器时 我可以访问您为他编写的所有AJAX函数 所以我可以用你的javascript编写任何东西 假装是那个用户
这绝对是一个非常有趣的问题 - 有人可以通过ajax访问用户脚本吗?我也在服务器上使用节点,但无法解决问题所在...... ajax的例子:
var transfer_data = {
id: jQuery(this).data('spin-id')
};
jQuery.ajax({
url: init_s.forms.provably.callback,
type: 'POST',
dataType: 'JSON',
data: transfer_data,
success: function (data) {
console.log(data);
if (data.type == 'failed') {
jQuery('#check_modal').modal('toggle');
} else {
// add data
}
}, error: function (e) {
console.log(e.message);
}
});
以及运行节点脚本的示例:
socket.on('new_spin_entry', function (data) { ... });
socket.emit('new_spin_entry', {
entry_id: data.user_spin_data.id
});
那到底是什么?这怎么可能?
P.S。我忘了提到他在页面中加载的脚本中插入警报。不是服务器脚本,而是加载到用户
的脚本答案 0 :(得分:6)
如果有人可以完全访问浏览器,那么他们可以在其中运行他们喜欢的任何代码 - 包括修改或添加JavaScript到您的网页。这与使用Ajax的站点完全无关 - 客户端与服务器交互的任何一点都可能容易受到攻击。
如果他们只能改变他们自己使用的浏览器的页面,那么这是正常行为,无需担心。
如果他们可以通过其他网站的链接或表单提交来注入数据,那么您很容易受到反映的XSS攻击。
如果他们可以注入保存在服务器某处的数据,导致脚本为其他用户运行,那么您很容易受到存储的XSS攻击的攻击。
如果他们只有授权用户才能这样做,那么您需要限制/正确编码提交的数据(因为您的授权用户不可信任)。
如果他们可以通过授权用户访问其他地方托管的页面来实现此目的,那么您很容易受到 CSRF攻击的攻击,并且您需要实施针对它们的保护(nonces是通常的解决方案)。 / p>
另见:
答案 1 :(得分:3)
在将这些变量发送到处理请求的服务器之前,黑客可以修改客户端上发送的任何变量。为了防止这种情况,您必须在处理接收数据的服务器端代码上使用验证。 永远不要相信任何形式的用户输入或直接从客户端收到的可以操作的变量。因此,例如在这种情况下,您可以使用会话变量来验证传输详细信息实际上是指登录用户,还检查这些不包含某些恶意代码,例如旨在利用代码中的安全漏洞的SQL查询。
希望这有帮助!