我想知道Laravel提供的XSS保护(如果无论如何).我在文档中找不到任何相关内容.
问题
我使用Eloquent的 create()方法将数据插入数据库($fillable/ $guarded属性在模型中设置).事实证明,我可以在任何形式的文本输入中自由地输出这样的内容:
<script>alert('Hacking Sony in 3...2...')</script>
Run Code Online (Sandbox Code Playgroud)
并将值插入数据库中.然后,当echo它进入时- 显示警报.
可能的解决方案
现在,Laravel是一个非常好的框架,所以我认为必须有一些东西可以防止XSS开箱即用.但是,我不知道那是什么.
如果我错了,处理问题的最佳方法是什么?
mysql_real_escape_string()每次Input::get()使用都会使用吗?strip_tags()呢?视图级转义是不够的
我知道我可以使用Blade的三重花括号来避开视图中的字符串,但这不是重点.让我更有意义的是不要让那些偷偷摸摸的混蛋进入数据库.
有人遇到过这个问题吗?
我有一个企业级应用程序,其中登录用户有权使用WYSIWYG编辑器将文章发布到页面.(您可以将此应用程序视为网站构建器.)
一切都很好,但问题是;
WYSIWYG编辑器发布一个包含HTML的文章,还有一些Laravel不喜欢的本地化字符串字符,因此Laravel的alpha_num支票无法通过.(因此我们不会在验证检查中使用它.)
我们需要允许像<,这样的字符",>因为他们可能想要使用WYSIWYG编辑器做一些基本的样式,因此htmlspecialchars()在回显/消毒值时不是一个选项,因为有害的东西就像<br>破坏.
用户能够发布类似的内容,<script type="text/javascript>alert('Hello');</script>或者</div></div></div><div style="width: 100%, height: 100% z-index: 999999">这是一个巨大的安全风险,我知道,但我们无法真正消毒/逃避任何事情.用户仍然可以编写<s<!---->cript>并通过检查.
所以,简而言之,我们不能依赖一些内置的Laravel和PHP函数.我们也无法禁用WYSIWYG编辑器,因为它经常在口语应用的大多数领域中使用.
避免这种情况的最佳方法是什么?
我正在考虑alpha_num在Laravel 之上创建一个自定义规则,它将被称为类似的东西alpha_num_localised_characters_plus_allowed_html_tags,并将该规则添加到包含WYSIWYG编辑器的任何输入.
这是一个好方法吗?还有更好的选择吗?你自己如何处理这些问题?
注意:请注意我们已经开发了一个庞大的应用程序,我们将依靠最快和最可维护的解决方案.
我正在学习JSP和Java,并编写了一个(非常)简单的留言板来开始使用JSP.但我想确保没有人可以使用CSS,所以我需要在将HTML代码保存到mySQL数据库之前将其删除.我已经在这里搜索过并找到了"
PreparedStatement pStmt = conn.prepareStatement("INSERT INTO test VALUES (ID, ?, ?)");
pStmt.setString(1, request.getParameter("sender"));
pStmt.setString(2, request.getParameter("text"));
pStmt.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
那么这样做的正确方法是什么?
我想让我的网站安全抵御XSS攻击.
我有一个模块允许用户将文本(带有特殊字符)插入数据库.此文本显示在起始页面上.
现在我的问题:我应该htmlentities($_POST["userinput"], ENT_QUOTES, 'UTF-8')在将userinput插入数据库之前使用吗?
或者我可以将用户输入直接插入数据库并显示它htmlentities吗?
现在这是我在PHP中遇到的一个非常奇怪的行为:htmlentities在调用时似乎不起作用; 因此,当我这样做时:
echo htmlentities("<iframe>");
Run Code Online (Sandbox Code Playgroud)
浏览器输出字符串参数unescaped,即<iframe>.
但是,当我调用该函数两次时,它可以工作:
echo htmlentities(htmlentities("<iframe>"));
Run Code Online (Sandbox Code Playgroud)
给我: &lt;iframe&gt;
现在我有两个问题,使用这个"有效的答案":首先,我知道这是一个奇怪的行为,当我的代码导出到另一个时,我无法保证会复制这种奇怪的东西(我希望它不是!)服务器.其次,为什么这种行为首先出现?
所以我的问题:我很想知道这种行为的起源以及该怎么做.
很遗憾你很多都无法验证我的问题,因为我正在使用我的localhost并htmlentities在其他服务器上正常工作.