jQuery Prepend Security
jQuery Prepend Security
这里有一个新手问题,如果我有一个文本区域没有提交。。。
<form onsubmit="return false;">
<textarea name="new_title_text" id="new_title_text"></textarea>
</form>
我使用jQuery将文本区域的值预先设置为div…
var textValue = $('#new_title_text').val()
$('#myDiv').prepend('<div>' + textValue + '</div>');
这有什么安全漏洞吗?有人能以某种方式注入JavaScript并预制XSS、CSRF或任何其他类型的攻击吗?我知道,一旦我将值提交到服务器,就需要对其进行检查,但在提交之前会发生什么吗?
提前感谢!
基本上,你不能相信客户端完成的任何验证,因为人们可以(非常容易)绕过JavaScript验证。
在服务器上进行适当的验证和卫生处理,将客户端验证留给用户体验,不要用明显无效的数据"打扰"服务器,比如需要值的空字段。
除非你让你的用户提交一些PHP代码或JavaSctipt代码在你的网站上的其他地方执行,否则你应该是安全的。请始终记住NOT要信任来自用户的任何数据。将所有传入的数据视为潜在威胁,并在以后计划使用时对处理过的任何数据进行消毒。
有人能以某种方式注入JavaScript并预制XSS、CSRF或任何其他类型的攻击吗
是的。您在没有HTML转义的情况下将文本注入HTML字符串,因此该字符串中的任何元字符(<
或&
)都将失败,并且可能容易受到注入攻击(例如<script>...
)。
问题是那个人是谁?从您当前的代码来看,外部方似乎不可能预先填充文本区域,因此必须是用户在攻击自己(而不是真正的漏洞)。
因此,您要么需要对进入HTML的字符串进行HTML转义,要么更好地使用DOM风格的访问方法,如.text()
和.attr()
来设置文本内容和属性,而不使用粗略的字符串标记生成。或者创建简写:
$('#myDiv').prepend(
$('<div>', {text: $('#new_title_text').val()})
);
基本思想是,对不受信任的数据使用前缀是不安全的。然而,可利用性确实取决于场景。如果攻击者能够创建一个url,使该脚本使用不受信任的值运行,那么您肯定存在XSS问题。然而,如果用户只能通过输入不安全的数据并单击按钮来触发此操作,则会更安全,但并不完全安全。这通常被称为self-xss,有时与点击劫持等一起被利用。
有关不安全jquery函数的更多信息,请参阅:http://erlend.oftedal.no/blog/?blogid=127
- RabbitMQ + Web Stomp and security
- Jquery.prepend()将一个元素保持在顶部
- Spring Security中的基本身份验证(身份验证失败消息)
- Content-Security-Policy for webapp in iframe
- Jquery prepend html语法错误“;和'
- Javascript Security:将敏感数据存储在比cookie更安全的自调用函数中
- jQuery Prepend Security
- Duo-security:如何在双因素身份验证中通过Duo.init()上的post_argument传递参数
- IndexedDB vs Cookie Security
- "java.security.AccessControlException:访问被拒绝(“java.net.S
- toDataURL引发Uncaught Security异常
- jQuery 函数 .prepend() 不适用于 WordPress 导航菜单项
- .prepend 不是一个函数
- jQuery .prepend a variable
- 显示使用Spring,Spring Security,Hibernate,jQuery,Backbone,AJAX的We
- JavaScript Games and Security
- jQuery - using .prepend()
- prepend() 和 prependTo() 之间的区别
- JavaScript JSON escape security
- 如果元素具有 className1 classFromArray prepend classFromArray