XSS javascript,漏洞检查
XSS javascript, exploit check
我目前正在一个页面上工作,我需要用户输入几个变量,当提交时,然后在整个页面中显示。
问题是,它需要是100%安全的代码,而我可以使用PDO/mysql等javascript不是我很流利的东西。
目前,我有以下内容:
<script language="JavaScript">
function showInput() {
document.getElementById('var1').innerText =
document.getElementById("user_var1").value;
document.getElementById('var2').innerText =
document.getElementById("user_var2").value;
}
</script>
与html
<form>
your variable 1 is = <input type="text" name="message" id="user_var1"><br />
your variable 2 is = <input type="text" name="message" id="user_var2"><br />
</form>
<input type="submit" onclick="showInput();">
<p>var1 = <span id='var1'></span></p>
<p>var2 = <span id='var2'></span></p>
据我所知,使用"。"innerText"应该停止使用任何html等,我已经测试了
<script>alert(document.cookie);</script>
将导致上面的内容原样打印(而不是运行)。
。
your variable 1 is = <script>alert(document.cookie);</script>
还有什么你会建议做,以确保它是安全的(XSS或其他)?需要输入的字符只有/和A-Z 0-9
Thanks in advance:)
<标题>编辑只是为了澄清,唯一的代码是上面的内容,页面不是从数据库中提取数据等(你上面看到的实际上是完整的php页面,只是缺少html头部正文标签等)。
标题>根据您上面所做的,您将不会有XSS。innerText
会进行适当的转义。
让你的网站100%安全是一项艰巨的任务。我想看看的一些事情是通过HTTPS和HSTS运行您的站点,以防止网络级对手篡改站点,参数化您的SQL查询,在表单提交时添加CSRF令牌。
特别是关于XSS,人们被XSS攻击的最常见方式之一是因为他们执行了不安全的DOM操作。如果你担心安全性,我强烈建议将你的JS移植到React,因为你正在操纵一个"虚拟DOM",它允许React执行上下文敏感的转义。它还减轻了开发人员进行适当转义的负担。
一个快速的安全胜利是添加一个CSP策略到您的网站和设置script-src
指令self
。CSP策略建立了某些内容可以在您的站点上运行的上下文。因此,如果例如,您有script-src
设置为self
(意味着您的JS加载在<script>
标签的src
属性中,指向与HTML服务相同的域,而不是内联在页面上),如果有人做XSS,它将(最有可能*)不运行。
这些只是您可以使用的不同安全性解决方案的一些示例,以及对安全性深入实践的简要介绍。我很高兴你认真对待安全问题!
*在某些情况下(例如,如果你动态生成你的脚本),他们的代码可以运行
这里是没有漏洞(请在投票前阅读)。
只是为了澄清,唯一的代码是上面的,页面不是从数据库中提取数据等(您在上面看到的实际上是完整的PHP页面,只是缺少HTML标题正文标签等)。
因此以下两个字段只能由当前用户填写:
<input type="text" name="message" id="user_var1">
<input type="text" name="message" id="user_var2">
,因为没有代码填充这两个字段。
代码填充的两个DOM元素如下:<span id='var1'></span>
<span id='var2'></span>
执行此操作的代码是
document.getElementById('var1').innerText =
document.getElementById("user_var1").value;
document.getElementById('var2').innerText =
document.getElementById("user_var2").value;
它是使用非标准的innerText
而不是textContent
,然而innerText
将设置文本内容而不是HTML内容,防止浏览器呈现任何标签或脚本。
然而,即使它设置了innerHTML
属性,所有用户所能做的就是攻击自己(就像他们在浏览器中打开开发人员工具一样)。
然而,为了正确的功能行为和互联网标准,我会使用textContent
而不是innerText
或innerHTML
。
注意
<script>alert(document.cookie);</script>
无论如何都不行,它必须是
<svg onload="alert(document.cookie)" />
或类似。HTML5规定通过innerHTML插入的<script>
标签不应该执行。
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 如何检查管道中未定义的项目
- 主干-不管怎样,检查事件以前是否绑定过
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 递归使用 eval() 是检查程序执行的好方法吗?
- 检查onsubmit doenst work jquery contactform上的函数
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- API密钥使用和检查示例
- 如何让程序检查所选单词中是否有按键
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 用于检查数组中是否存在元素的javascript自定义方法
- 如何检查字符串的一部分与数组匹配
- Jquery如何检查今天的时间大于使用给定时间
- 使用javascript反复检查用户在facebook上的登录状态
- 使用 jQuery 检查所有值是否为空或已填充
- 使用Javascript使用数组检查文本框中的值
- JavaScript代码未正确检查ajax请求
- 如何检查用户在html5视频播放器中观看了完整的视频
- XSS javascript,漏洞检查