- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果变量包含以下内容:
$straddr = "1 elm street<br>Unit 4<br><i>City Unknown</i>Alabama";
并且我想将该变量包含在 Blade 模板中,我可以这样做:
<td>{{ $straddr }}</td>
但这将显示 HTML 标签。
By default, Blade
{{ }}
statements are automatically sent through PHP'shtmlspecialchars
function to prevent XSS attacks. If you do not want your data to be escaped, you may use the following syntax:
Hello, {!! $name !!}.
看来使用{!! Blade 文件中的 $variable !!}
语法可能非常危险。还是在这种情况下?
不转义来自数据库的数据是否风险太大?
最佳答案
在评论中,我们确定该 HTML 实际上是由您在 Controller 方法中生成的。所以真正的问题是,为什么要这么麻烦只是为了颠覆 MVC 范式?
假设您有一个 User
模型,其属性为 address_1
、address_2
、address_3
、city
、state
和 zip_code
,这就是您需要做的。
<td>
@if($user->address_1)
{{ $user->address_1 }}<br/>
@if($user->address_2) {{ $user->address_2 }}<br/>@endif
@if($user->address_3) {{ $user->address_3 }}<br/>@endif
@else
<i>{{ __("Street address unknown") }}</i><br/>
@endif
@if($user->city || $user->state)
{{ $user->city ?? "?" }}, {{ $user->state ?? "?" }}
@else
<i>City and state unknown</i>
@endif {{ $this->zip_code ?? "" }}
</td>
您提供的其余代码用于进行数据验证,这绝对不应该在数据生命周期的现阶段进行。您的数据应该在进入应用程序时进行验证,无论是用户输入、CSV 导入还是其他方式。您不必将城市名称大写,确定您的地址长度是否大于 3 个字符,或者想知道在显示时是否有州的缩写或全名。
关于php - 如何在 Blade 模板中输出 HTML 而不遭受 XSS 攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67810723/
对于我们目前正在构建的发票系统,我很难理解基于状态的功能。该系统将支持发票的计算、人工审批、打印和存档。 起初我认为我们应该使用 State Pattern对此进行建模。发票将是上下文,它将打印、归档
我是一名优秀的程序员,十分优秀!