블레이드는 라라벨에 포함되어 있는 템플릿 엔진
문법을 간단히 할수있다.
블레이드와 기존 뷰를 구분하기 위해 블레이드 템플릿 파일은 파일명.blade.php 확장자를 붙인다.
route/web.php
Route::get('hello/html', function() {
return view('hello.html');
});
== 블레이드 템플릿 ==
resources/views/task/view.blade.php
<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Ok</title>
</head>
<body>
<h1>할일 정보</h1>
<p> 작 업: {{ $task['name'] }} </p>
<p> 기 한: {{ $task['due_date'] }} </p>
</body>
</html>
<?= $변수 ?> -> {{ $변수 }}
※ blade템플릿은 사이트 간 스크립팅(CSS; Cross-Site Scripting) 같은 공격을 보호하는 보안의 측면에서 큰 장점도 있음
== CSS(XSS) 공격 예제==
route/web.php
Route::get('task/alert', function() {
$task= ['name' => '라라벨 예제 작성',
'due_date' => '2015-06-01 11:22:33',
'comment' => '<script>alert("Welcome");</script>'];
return view('task.alert')->with('task', $task);
});
resources/views/task/alert.blade.php
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Ok</title>
</head>
<body>
<h1>할일 정보</h1>
<p> 작 업: {{ $task['name'] }}</p>
<p> 기 한: {{ $task['due_date'] }}</p>
<p> comment: <?= $task['comment'] ?></p>
</body>
</html>
<?= $task['comment'] ?>를 사용하면
※ alert창이 나온다.
{{ $task['comment'] }}라고 작성시
※ <script>alert("Welcome");</script> 문자열 자체가 나온다. (Sanitizing화)
공격자가 입력값에 악의적으로 스크립트를 끼워 넣는 공격방식 CSS를 막을 수 있다.
Sanitizing(새너타이징)
< script > alert(" Welcome "); < script >
블레이드 템플릿에서 Form이나 Html을 출력하기 위해선는 {!! $task['comment'] !!} 를 사용하면된다.
블레이드 문법 |
PHP 문법 |
용도 |
{{ $var }} |
<?php echo htmlentities($var); ?> |
새너타이징된 문자 출력 |
{{{ $var }}} |
<?php echo htmlentities($var); ?> |
새너타이징된 문자 출력 |
{!! $var !!} |
<?php echo $var; ?> |
원래 문자 출력 |
'프로그래밍 > Laravel5' 카테고리의 다른 글
Laravel - Blade Template (반복문) (0) | 2017.08.20 |
---|---|
Laravel - Blade Template (조건문) (0) | 2017.08.20 |
Laravel - Views (0) | 2017.08.20 |
Laravel - HTTP Response(Json변환) (0) | 2017.08.20 |
Laravel - HTTP Response 처리 (0) | 2017.08.20 |