相关疑难解决方法(0)

Xra保护如何以及在何处应用于Laravel?

我想知道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的三重花括号来避开视图中的字符串,但这不是重点.让我更有意义的是不要让那些偷偷摸摸的混蛋进入数据库.

有人遇到过这个问题吗?

php xss laravel laravel-4

15
推荐指数
4
解决办法
3万
查看次数

如何使用Laravel允许WYSIWYG编辑器和禁用XSS攻击?

我有一个企业级应用程序,其中登录用户有权使用WYSIWYG编辑器将​​文章发布到页面.(您可以将此应用程序视为网站构建器.)

一切都很好,但问题是;

  1. WYSIWYG编辑器发布一个包含HTML的文章,还有一些Laravel不喜欢的本地化字符串字符,因此Laravel的alpha_num支票无法通过.(因此我们不会在验证检查中使用它.)

  2. 我们需要允许像<,这样的字符",>因为他们可能想要使用WYSIWYG编辑器做一些基本的样式,因此htmlspecialchars()在回显/消毒值时不是一个选项,因为有害的东西就像<br>破坏.

  3. 用户能够发布类似的内容,<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编辑器的任何输入.

这是一个好方法吗?还有更好的选择吗?你自己如何处理这些问题?

注意:请注意我们已经开发了一个庞大的应用程序,我们将依靠最快和最可维护的解决方案.

php laravel laravel-4 laravel-3

8
推荐指数
1
解决办法
4746
查看次数

如何在保存到数据库之前在JSP中转义-html?

我正在学习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)

那么这样做的正确方法是什么?

java database jsp escaping

2
推荐指数
1
解决办法
6142
查看次数

插入数据库之前的htmlentities

我想让我的网站安全抵御XSS攻击.

我有一个模块允许用户将文本(带有特殊字符)插入数据库.此文本显示在起始页面上.

现在我的问题:我应该htmlentities($_POST["userinput"], ENT_QUOTES, 'UTF-8')在将userinput插入数据库之前使用吗?

或者我可以将用户输入直接插入数据库并显示它htmlentities吗?

php security xss

0
推荐指数
1
解决办法
657
查看次数

htmlentities仅在调用两次时才在浏览器上运行

现在这是我在PHP中遇到的一个非常奇怪的行为:htmlentities在调用时似乎不起作用; 因此,当我这样做时:

echo htmlentities("&lt;iframe&gt;");
Run Code Online (Sandbox Code Playgroud)

浏览器输出字符串参数unescaped,即&lt;iframe&gt;.

但是,当我调用该函数两次时,它可以工作:

echo htmlentities(htmlentities("&lt;iframe&gt;"));
Run Code Online (Sandbox Code Playgroud)

给我: &amp;lt;iframe&amp;gt;

我注意到这个答案的奇怪行为,用户表达了同样的困惑.

现在我有两个问题,使用这个"有效的答案":首先,我知道这是一个奇怪的行为,当我的代码导出到另一个时,我无法保证会复制这种奇怪的东西(我希望它不是!)服务器.其次,为什么这种行为首先出现?

所以我的问题:我很想知道这种行为的起源以及该怎么做.

很遗憾你很多都无法验证我的问题,因为我正在使用我的localhost并htmlentities在其他服务器上正常工作.

php database html-entities

-5
推荐指数
1
解决办法
268
查看次数

标签 统计

php ×4

database ×2

laravel ×2

laravel-4 ×2

xss ×2

escaping ×1

html-entities ×1

java ×1

jsp ×1

laravel-3 ×1

security ×1