我有一个Javascript函数,可以通过提交按钮从onClick
格式检索数据。
function valueCheck()
{
var cCheck = document.getElementById("c");
var cChoice = chemCheck.options[chemCheck.selectedIndex].value;
var coCheck = document.getElementById("co");
var coChoice = compCheck.options[compCheck.selectedIndex].value;
var gCheck = document.getElementById("g");
var gChoice = geoCheck.options[geoCheck.selectedIndex].value;
var mCheck = document.getElementById("m");
var mChoice = mathCheck.options[mathCheck.selectedIndex].value;
var pCheck = document.getElementById("p");
var pChoice = physCheck.options[physCheck.selectedIndex].value;
根据OSWAP XSS PREVENTION CHEAT SHEET,这是不安全的。使用filter_var($var, FILTER_SANITIZE_STRING)
和我trim()
对数据进行“清理”以获得良好的衡量标准。不幸的是,这是服务器端,所以它没有帮助。现在,如果有人要更改选择菜单中的值,则存在漏洞。我这样调用我的Javascript函数:
<input type="submit" name="submit" onClick="return function();">
它需要能够在客户端工作。在将数据传递给Javascript函数之前,如何过滤/清理数据?我需要在选择框中获取每个值,以便确保它们不相同。 (注意上面没有显示整个功能,如果需要我可以提供。我认为问题主要是我将数据放入脚本的方式)。
如何逃避数据?
编辑:为了澄清我的问题,我想知道是否有一种安全的方法将客户端数据传递给javascript函数。这些数据还没有被消毒(除了我可以做的所有客户端的东西)所以我担心可能存在XSS漏洞。根据OSWAP XSS预防作弊表我应该逃避数据,但我不太清楚如何做到这一点。我没有将任何用户输入的数据呈现到浏览器中,只存储它。
编辑2:我想我终于明白了。 OSWAP备忘单中提到的XSS漏洞是指将用户提供的数据放入HTML /其他内容并将其显示回页面?如果我只是将它保存到文本文件/ csv文件中,我想我必须确保一切都是好的服务器端。答案 0 :(得分:0)
如果您只存储数据,则没有XSS漏洞。史争结束。但是,如果您不希望有人将10TB数据放入您的服务器,您仍应检查输入数据长度。
一般来说,客户端是一种错觉。 HTML和JavaScript就像幕布一样,涵盖了您的webapp的真实代码(php或服务器端的任何内容)。您可以从不信任客户端数据,即使您使用JS过滤它也是如此。有人基本上可以关闭JS或使用浏览器以外的其他软件与您的网站进行通信(如netcat或curl)。
我建议你观看this whole movie,这样你就可以想象黑客会破解你的方式。
请记住,过滤输入/输出数据服务器端。