好的,我从一个非常简单的方法开始:
alert(someText);
“someText”是一个变量,用户将通过表单传递值。 是否有可能用户传递以下文本,并在我的Javascript中注入一些代码? 例如,用户是否可以通过此方法传递此信息:
“anotherText”); alert(“the nextText”
如果是这样,我该如何防止它发生?如果没有,任何人都可以提到一些关于javascript的安全问题吗?
答案 0 :(得分:7)
不,它不起作用。字符串值在使用它们时不会被替换,它们只是用作字符串。所以没有安全问题。
您唯一需要担心的是使用eval
:
eval("alert(\" + someText + "\");");
(是的,我意识到这是一个人为的例子......)
答案 1 :(得分:4)
基本上,只要你没有调用“eval”(或某些功能),并且你没有直接将用户创建的Javascript注入页面(通过脚本标签),你就不应该什么都要担心。
答案 2 :(得分:2)
一旦你在javascript中有一个变量,除非你做一个eval或者用它设置DOM元素的innerHTML属性,否则它将无关紧要。
除此之外,是否有可能注入取决于你如何从表单获取值到javascript。
例如,如果表单正在提交给服务器,并且通过在服务器端编写javascript来设置变量的值,则可能会出现问题。 这样的事情显然会让脚本开放注射。
var someText = "<?php echo $_POST["someText"]; ?>";
因此,如果不知道如何从表单中获取值,很难说是否存在安全问题。根据我的经验,服务器端代码是大多数XSS向量的原因。在javascript方面,你通常只需要注意eval和innerHTML。
答案 3 :(得分:0)
if&#34; someText&#34;由服务器呈现,例如JSP,velocity,然后它是危险的
例如
<script>
alert({{someText}})
</script>
然后在JavaScript运行时,在HTML解析时,它是危险的
但如果“sometext”是javascript变量,@ Zifre的答案是对的;
旁边,除了&#34; eval&#34;关键字,新函数(sometext),location.href = sometext ......可能会调用一些攻击