Ruby on rails 在显示更新的数据之前,使用javascript清除用户输入

Ruby on rails 在显示更新的数据之前,使用javascript清除用户输入,ruby-on-rails,security,xss,Ruby On Rails,Security,Xss,在其中一个页面(用户的配置文件)上,用户可以编辑其信息。然后使用AJAX保存更新的信息(名称、标语等)。以下是我遵循的步骤: a) 用户输入数据并单击保存 b) 我使用ajax将(未经验证的)数据发送到服务器 c) 数据在XSS的服务器端清理,并使用活动记录保存,以避免SQL注入 d) 在客户端,如果AJAX请求成功,则用户的新数据(客户端上未验证的数据)将替换旧数据 现在假设是恶意用户,他们插入了一些JS代码,JS代码将在更新后工作一次,因为客户端没有检查数据。但是,如果用户刷新屏幕,干净的已

在其中一个页面(用户的配置文件)上,用户可以编辑其信息。然后使用AJAX保存更新的信息(名称、标语等)。以下是我遵循的步骤:

a) 用户输入数据并单击保存

b) 我使用ajax将(未经验证的)数据发送到服务器

c) 数据在XSS的服务器端清理,并使用活动记录保存,以避免SQL注入

d) 在客户端,如果AJAX请求成功,则用户的新数据(客户端上未验证的数据)将替换旧数据


现在假设是恶意用户,他们插入了一些JS代码,JS代码将在更新后工作一次,因为客户端没有检查数据。但是,如果用户刷新屏幕,干净的已验证数据将取而代之,JS将不会运行。此方法是否存在任何潜在的安全漏洞?

如果数据不包含HTML,请使用$.text(或.innerText)和$.attr(或.setAttribute)更新视图。或者,ajax调用可以返回安全的HTML片段。

不,这是常用的方法。切勿信任浏览器(或来自web的任何其他数据)。只要您在服务器上正确地进行清理和验证,它们就可以发送您想要的任何内容,而您的代码会忽略它。他们刷新,看到的是发送给您垃圾之前的数据。您可以进行额外的javascript验证,但这是一个可用性问题,可以更早地显示用户输入错误或丢失的数据,永远不要信任它,在服务器上进行验证。