Compare commits
7
Commits
80dd9e0d07
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8cbf30aa0d | ||
|
|
fc244f4009 | ||
|
|
0f8ac914f8 | ||
|
|
5c8f930bbd | ||
|
|
5b31b09881 | ||
|
|
d6bb65aa7f | ||
|
|
e1e357e3ef |
No files matched your search
@@ -2,3 +2,4 @@
|
|||||||
__pycache__
|
__pycache__
|
||||||
/venv
|
/venv
|
||||||
db.sqlite3
|
db.sqlite3
|
||||||
|
/securityquiz/secrets.py
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
django
|
django
|
||||||
django-oauth-toolkit
|
django-oauth-toolkit
|
||||||
django-cors-headers
|
django-cors-headers
|
||||||
|
pyopenssl
|
||||||
|
psycopg2
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
DB_HOST = ''
|
||||||
|
DB_NAME = ''
|
||||||
|
DB_USER = ''
|
||||||
|
DB_PASSWORD = ''
|
||||||
@@ -9,7 +9,10 @@ https://docs.djangoproject.com/en/1.6/ref/settings/
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||||
import os, sys
|
import os
|
||||||
|
import sys
|
||||||
|
from . import secrets
|
||||||
|
|
||||||
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
|
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
|
||||||
|
|
||||||
CLOSED = False
|
CLOSED = False
|
||||||
@@ -26,7 +29,7 @@ DEBUG = False
|
|||||||
if 'runserver' in sys.argv:
|
if 'runserver' in sys.argv:
|
||||||
DEBUG = True
|
DEBUG = True
|
||||||
|
|
||||||
ALLOWED_HOSTS = ['websec.paulwagener.nl']
|
ALLOWED_HOSTS = ['websec.paulwagener.nl', '127.0.0.1']
|
||||||
|
|
||||||
|
|
||||||
# Application definition
|
# Application definition
|
||||||
@@ -43,7 +46,7 @@ INSTALLED_APPS = (
|
|||||||
'corsheaders',
|
'corsheaders',
|
||||||
)
|
)
|
||||||
|
|
||||||
MIDDLEWARE_CLASSES = (
|
MIDDLEWARE = (
|
||||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
'django.middleware.common.CommonMiddleware',
|
'django.middleware.common.CommonMiddleware',
|
||||||
'django.middleware.csrf.CsrfViewMiddleware',
|
'django.middleware.csrf.CsrfViewMiddleware',
|
||||||
@@ -64,8 +67,11 @@ WSGI_APPLICATION = 'securityquiz.wsgi.application'
|
|||||||
|
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': {
|
'default': {
|
||||||
'ENGINE': 'django.db.backends.sqlite3',
|
'ENGINE': 'django.db.backends.postgresql',
|
||||||
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
|
'NAME': secrets.DB_NAME,
|
||||||
|
'USER': secrets.DB_USER,
|
||||||
|
'PASSWORD': secrets.DB_PASSWORD,
|
||||||
|
'HOST': secrets.DB_HOST
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,7 +107,6 @@ TEMPLATES = [
|
|||||||
'django.template.context_processors.debug',
|
'django.template.context_processors.debug',
|
||||||
'django.template.context_processors.request',
|
'django.template.context_processors.request',
|
||||||
'django.contrib.auth.context_processors.auth',
|
'django.contrib.auth.context_processors.auth',
|
||||||
'securityquiz.settings.closed',
|
|
||||||
'django.contrib.messages.context_processors.messages',
|
'django.contrib.messages.context_processors.messages',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@@ -111,6 +116,3 @@ TEMPLATES = [
|
|||||||
STATICFILES_DIRS = (
|
STATICFILES_DIRS = (
|
||||||
PROJECT_PATH + '/static',
|
PROJECT_PATH + '/static',
|
||||||
)
|
)
|
||||||
|
|
||||||
def closed(request):
|
|
||||||
return {'CLOSED': CLOSED}
|
|
||||||
+9
-14
@@ -1,17 +1,12 @@
|
|||||||
-----BEGIN PGP MESSAGE-----
|
-----BEGIN PGP MESSAGE-----
|
||||||
|
|
||||||
owEBXgKh/ZANAwACAdVV8vX6nhxaAawuYglwbGFpbi50eHRVdLQaVGhlIE5hcndo
|
owEBdgGJ/pANAwAIAQXMoUhwzjSpAawvYgpzZWNyZXQudHh0W7KUz1RoZSBOYXJ3
|
||||||
YWwgQmFjb25zIGF0IE1pZG5pZ2h0CokCHAQAAQIABgUCVXS0GgAKCRDVVfL1+p4c
|
aGFsIEJhY29ucyBhdCBNaWRuaWdodAqJATMEAAEIAB0WIQTUzObaA3ShseyNi1AF
|
||||||
Wl31EACZ0itLnfLQrkFYGEa8DxgG6O101oc350JekBI7mIm1x556M3dIkyDTSqPd
|
zKFIcM40qQUCW7KUzwAKCRAFzKFIcM40qQd2B/sEA5s/TiXM7GFplw2ocxegoIJS
|
||||||
1gY+5wE3iklSnqPAfRSskclQ5SahK7mIjRw8NoCpWGRdFT/2u15lZofqGMV23T1R
|
TfqeGJoYJt0r5W6j+p2TQ07nH0vadqBpqEIgK9f3VQvUL89Triq0PLp6AgNdB+GR
|
||||||
hEuxxNlZwcWEWDg2Ixx6OqE836Qm+ITaS12ok5qDZFxj4hd4C7uinAv5CWKIyvwl
|
a2M29x8hCEAZQX+Aj74YKfnso0F0EqP3e+Oj5oDrixstnPoy/hXlVbtnR9zvIJXh
|
||||||
l5ZwwWB4p+NT6JxY6p5Pw0J5xPVCE+pAFesPUwAYydQ5CabgdfRyjc6iMQz+GRFD
|
Eme/pxHkIHnc4a2JojEQQIxu7WvYoXKcrGYPyX0/pvyWGAHIKcPtFNcnO2oF3rp7
|
||||||
Qs7kWuZ2JKPWm+2h0UQa38Id66fd4l38x16+rerIEG8XTMlfiXgtCPT9Rkdxb8lD
|
GRzhc3tydqkIwevosHOsf4T0UoDb/4PAUvkfgbnSdbvGhAdLQtAMWl860lQRQ/WG
|
||||||
bZQJefupCPP/EAQnZOPzHFbZ32PaOnp0DTLi641W24rb0hwD2LPHIRh+KPWfwaVl
|
oJaWC0hUOxzbSoHZeBH8+J8871e+jwE+j+6vk9lVj6Bz4c6O3mUOhxL+dkTw
|
||||||
+1BSEGE3STDjN0CGaTE1KDM5p5TEhML4/LwRucdp+y8c3f1gyWNd8ChnA9aCFr5w
|
=FLte
|
||||||
h4FIpE1gAd6XANkVGCIHlZ0Lzxu022zjNFPW2sQeFJy1ZEqBAAwaOlnceztTyx6c
|
|
||||||
J+TNey4lYy2F4hVn/QxYF5kMUIEw22y4tMmwX4tOVkgg5I0X+mf2Csosbfz7Xsn3
|
|
||||||
0i4utcTqwmVov3obPQj1QprBeSMXoYSJMyUCO7eIE9eqeGy0uMO6xkG3Z2QGsZNS
|
|
||||||
aAzu9msSLIc5cQWx9Pva9pafC/sFIyJWudBlf8UEkeIFSll9FQ==
|
|
||||||
=h6Mi
|
|
||||||
-----END PGP MESSAGE-----
|
-----END PGP MESSAGE-----
|
||||||
+4
-4
@@ -30,15 +30,15 @@
|
|||||||
<li>
|
<li>
|
||||||
<a href="/wachtwoorden">Wachtwoorden</a>
|
<a href="/wachtwoorden">Wachtwoorden</a>
|
||||||
</li>
|
</li>
|
||||||
<!--<li>
|
<li>
|
||||||
<a href="/oauth">OAuth</a>
|
<a href="/oauth">OAuth</a>
|
||||||
</li>-->
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="/certificaten">Certificaten</a>
|
<a href="/certificaten">Certificaten</a>
|
||||||
</li>
|
</li>
|
||||||
<!-- <li>
|
<li>
|
||||||
<a href="/encryptie">Encryptie</a>
|
<a href="/encryptie">Encryptie</a>
|
||||||
</li>-->
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
Moeilijkheidsgraad:
|
Moeilijkheidsgraad:
|
||||||
|
|||||||
@@ -224,7 +224,7 @@
|
|||||||
<p>
|
<p>
|
||||||
|
|
||||||
<p>Haal van de keyserver onze publieke sleutel op met sleutel-ID
|
<p>Haal van de keyserver onze publieke sleutel op met sleutel-ID
|
||||||
<b>B69F77232CE5546445137725D555F2F5FA9E1C5A</b> (GPG noemt dit ook wel de user-ID). We hebben met onze private sleutel
|
<b>D4CCE6DA0374A1B1EC8D8B5005CCA14870CE34A9</b> (GPG noemt dit ook wel de user-ID). We hebben met onze private sleutel
|
||||||
een tekst versleuteld in
|
een tekst versleuteld in
|
||||||
<a href="static/secret.txt.asc" target="_blank">dit bestand</a>. Gebruik de publieke sleutel om dit bestand te ontsleutelen.</p>
|
<a href="static/secret.txt.asc" target="_blank">dit bestand</a>. Gebruik de publieke sleutel om dit bestand te ontsleutelen.</p>
|
||||||
|
|
||||||
@@ -282,7 +282,7 @@
|
|||||||
<p>Op die manier ontstaat er een web van vertrouwensrelaties. En als jij Tony vertrouwd, en Tony vertrouwd Steve. Dan
|
<p>Op die manier ontstaat er een web van vertrouwensrelaties. En als jij Tony vertrouwd, en Tony vertrouwd Steve. Dan
|
||||||
kan je indirect ervan uitgaan dat de naam van de sleutel van Steve klopt. Op die manier kan je indirect een hele
|
kan je indirect ervan uitgaan dat de naam van de sleutel van Steve klopt. Op die manier kan je indirect een hele
|
||||||
hoop sleutels vertrouwen. Op onze keyserver zie je bijvoorbeeld
|
hoop sleutels vertrouwen. Op onze keyserver zie je bijvoorbeeld
|
||||||
<a href="http://websec.paulwagener.nl:11371/pks/lookup?op=vindex&search=0XB69F77232CE5546445137725D555F2F5FA9E1C5A" target="_blank">wie er allemaal direct onze sleutel vertrouwd.</a>
|
<a href="http://websec.paulwagener.nl:11371/pks/lookup?op=vindex&search=0XD4CCE6DA0374A1B1EC8D8B5005CCA14870CE34A9" target="_blank">wie er allemaal direct onze sleutel vertrouwd.</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<img src="static/img/web_of_trust.gif">
|
<img src="static/img/web_of_trust.gif">
|
||||||
@@ -292,7 +292,7 @@
|
|||||||
sleutel weer opnieuw te versturen naar de keyserver.</p>
|
sleutel weer opnieuw te versturen naar de keyserver.</p>
|
||||||
|
|
||||||
<div class="question">
|
<div class="question">
|
||||||
<span class="question-string">Gebruik je eigen sleutel om onze sleutel (sleutel-ID: B69F77232CE5546445137725D555F2F5FA9E1C5A) en de sleutel van
|
<span class="question-string">Gebruik je eigen sleutel om onze sleutel (sleutel-ID: D4CCE6DA0374A1B1EC8D8B5005CCA14870CE34A9) en de sleutel van
|
||||||
drie medestudenten te ondertekenen. Upload je ondertekening terug naar de keyserver. Plak je eigen sleutel-ID als
|
drie medestudenten te ondertekenen. Upload je ondertekening terug naar de keyserver. Plak je eigen sleutel-ID als
|
||||||
antwoord hier.</span>
|
antwoord hier.</span>
|
||||||
{% include "points.html" with points=answers.answer_encryption_sign_keys.points max="5" %}
|
{% include "points.html" with points=answers.answer_encryption_sign_keys.points max="5" %}
|
||||||
@@ -310,3 +310,5 @@
|
|||||||
<a href="http://xkcd.com/364/" target="_blank">
|
<a href="http://xkcd.com/364/" target="_blank">
|
||||||
<img src="http://imgs.xkcd.com/comics/responsible_behavior.png">
|
<img src="http://imgs.xkcd.com/comics/responsible_behavior.png">
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
@@ -29,11 +29,13 @@
|
|||||||
<li>
|
<li>
|
||||||
<a href="/?wachtwoorden">Wachtwoorden</a>
|
<a href="/?wachtwoorden">Wachtwoorden</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
<!--
|
<a href="/?certificaten">Certificaten</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="/?oauth">OAuth</a>
|
<a href="/?oauth">OAuth</a>
|
||||||
</li>
|
</li>
|
||||||
|
<!--
|
||||||
<li>
|
<li>
|
||||||
<a href="/?certificaten">Certificaten</a>
|
<a href="/?certificaten">Certificaten</a>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
+9
-31
@@ -111,12 +111,6 @@
|
|||||||
<img src="static/img/oauth_register.png" style="width: 50%">
|
<img src="static/img/oauth_register.png" style="width: 50%">
|
||||||
</figure>
|
</figure>
|
||||||
|
|
||||||
<div class="question">
|
|
||||||
<span class="question-string">Wat is de client_id die je hebt geregistreerd?</span>
|
|
||||||
{% include "points.html" with points=answers.answer_oauth_client_id.points max="5" %}
|
|
||||||
<input class="question-input" name="answer_oauth_client_id" value="{{ answers.answer_oauth_client_id.string }}"></input>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p>Elke OAuth server heeft twee endpoints (lees: URL's): de authorisatie endpoint en de token endpoint. Hieronder zie je de
|
<p>Elke OAuth server heeft twee endpoints (lees: URL's): de authorisatie endpoint en de token endpoint. Hieronder zie je de
|
||||||
endpoints van een aantal bekende servers:</p>
|
endpoints van een aantal bekende servers:</p>
|
||||||
|
|
||||||
@@ -128,8 +122,8 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Deze cursus</td>
|
<td>Deze cursus</td>
|
||||||
<td>http://websec.paulwagener.nl/o/authorize/</td>
|
<td>https://websec.paulwagener.nl/o/authorize/</td>
|
||||||
<td>http://websec.paulwagener.nl/o/token/</td>
|
<td>https://websec.paulwagener.nl/o/token/</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>GitHub</td>
|
<td>GitHub</td>
|
||||||
@@ -179,13 +173,11 @@
|
|||||||
|
|
||||||
<p>Voor deze site is de authorisatie URL:
|
<p>Voor deze site is de authorisatie URL:
|
||||||
<br>
|
<br>
|
||||||
<span class="url">http://websec.paulwagener.nl/o/authorize/?client_id=(CLIENT_ID)&response_type=token</span>
|
<span class="url">https://websec.paulwagener.nl/o/authorize/?client_id=(CLIENT_ID)&response_type=token</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="question">
|
<div class="question">
|
||||||
<span class="question-string">Authoriseer met je eigen client id. Welke access token heb je gekregen?</span>
|
<span class="question-string">Authoriseer met je eigen client id. Welke access token heb je gekregen?</span>
|
||||||
{% include "points.html" with points=answers.answer_oauth_implicit_access_token.points max="5" %}
|
|
||||||
<input class="question-input" name="answer_oauth_implicit_access_token" value="{{ answers.answer_oauth_implicit_access_token.string }}"></input>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="hint">
|
<p class="hint">
|
||||||
@@ -194,8 +186,6 @@
|
|||||||
|
|
||||||
<div class="question">
|
<div class="question">
|
||||||
<span class="question-string">Hoeveel seconden is deze token code geldig?</span>
|
<span class="question-string">Hoeveel seconden is deze token code geldig?</span>
|
||||||
{% include "points.html" with points=answers.answer_oauth_implicit_access_token_expires.points max="5" %}
|
|
||||||
<input class="question-input" name="answer_oauth_implicit_access_token_expires" value="{{ answers.answer_oauth_implicit_access_token_expires.string }}"></input>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>De access token kan je nu gebruiken om een request te doen naar
|
<p>De access token kan je nu gebruiken om een request te doen naar
|
||||||
@@ -211,8 +201,6 @@
|
|||||||
|
|
||||||
<div class="question">
|
<div class="question">
|
||||||
<span class="question-string">Wat is de geheime code die gestuurd wordt als je de API aanroept?</span>
|
<span class="question-string">Wat is de geheime code die gestuurd wordt als je de API aanroept?</span>
|
||||||
{% include "points.html" with points=answers.answer_oauth_api_hello.points max="10" %}
|
|
||||||
<input class="question-input" name="answer_oauth_api_hello" value="{{ answers.answer_oauth_api_hello.string }}"></input>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="hint">
|
<p class="hint">
|
||||||
@@ -246,8 +234,6 @@
|
|||||||
|
|
||||||
<div class="question">
|
<div class="question">
|
||||||
<span class="question-string">Welke authorisatie code heb je gekregen?</span>
|
<span class="question-string">Welke authorisatie code heb je gekregen?</span>
|
||||||
{% include "points.html" with points=answers.answer_oauth_authorization_code.points max="5" %}
|
|
||||||
<input class="question-input" name="answer_oauth_authorization_code" value="{{ answers.answer_oauth_authorization_code.string }}"></input>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<img src="static/img/oauth_authorization_code.png" style="width: 25%; float: right">
|
<img src="static/img/oauth_authorization_code.png" style="width: 25%; float: right">
|
||||||
@@ -283,8 +269,6 @@
|
|||||||
|
|
||||||
<div class="question">
|
<div class="question">
|
||||||
<span class="question-string">Copy paste de response die je hebt gekregen waar de refresh token in staat</span>
|
<span class="question-string">Copy paste de response die je hebt gekregen waar de refresh token in staat</span>
|
||||||
{% include "points.html" with points=answers.answer_oauth_refresh_token.points max="5" %}
|
|
||||||
<textarea class="question-input" name="answer_oauth_refresh_token">{{ answers.answer_oauth_refresh_token.string }}</textarea>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<img src="static/img/oauth_refresh_token.png" style="float: right; width: 25%">
|
<img src="static/img/oauth_refresh_token.png" style="float: right; width: 25%">
|
||||||
@@ -300,9 +284,9 @@
|
|||||||
<p>Bij Google hebben we een OAuth client geregistreerd en de volgende gegevens gekregen:</p>
|
<p>Bij Google hebben we een OAuth client geregistreerd en de volgende gegevens gekregen:</p>
|
||||||
|
|
||||||
<code style="display: block;">
|
<code style="display: block;">
|
||||||
Client id: 799427728270-ahr6bg713mtkh2htskbmqko8hpheq1md.apps.googleusercontent.com<br>
|
Client id: 507532281075-92u6kon3r2kpesqbadmt29cnlvtpjbkh.apps.googleusercontent.com<br>
|
||||||
Client secret: 3W9FcQefBmhX7CT1FgzqiCdR<br>
|
Client secret: yTmMOl9GfCFl-F4QoESfi7HT<br>
|
||||||
Refresh token: 1/WfdEEjWgj5Lm8p6wZzoTCeirQz7e4hMDIxvOkdvSjsU<br></code>
|
Refresh token: 1/EpIRGrHcCV8wi54zGwJoKUklSTkndrJvj1mixqNrgkY"<br></code>
|
||||||
|
|
||||||
<p>Met deze gegevens kunnen we weer een POST doen naar de token endpoint (voor Google: https://accounts.google.com/o/oauth2/token)
|
<p>Met deze gegevens kunnen we weer een POST doen naar de token endpoint (voor Google: https://accounts.google.com/o/oauth2/token)
|
||||||
om een access token te genereren. Dit keer hoeven we geen redirect_uri mee te sturen en moeten we de grant_type parameter
|
om een access token te genereren. Dit keer hoeven we geen redirect_uri mee te sturen en moeten we de grant_type parameter
|
||||||
@@ -314,16 +298,14 @@
|
|||||||
<img src="static/img/oauth_google_refresh.png" class="screenshot" style="width: 70%; margin: 20px; display: block">
|
<img src="static/img/oauth_google_refresh.png" class="screenshot" style="width: 70%; margin: 20px; display: block">
|
||||||
|
|
||||||
<p>Gebruik de access token die je krijgt om een API call te doen naar
|
<p>Gebruik de access token die je krijgt om een API call te doen naar
|
||||||
<span class="url">https://www.googleapis.com/calendar/v3/calendars/websecpaulwagener@gmail.com/events</span>. Vergeet niet weer de juiste
|
<span class="url">https://www.googleapis.com/calendar/v3/calendars/websec.paulwagener@gmail.com/events</span>. Vergeet niet weer de juiste Authorization
|
||||||
Authorization header te gebruiken om je access token in te zetten! Als je het goed doet krijg je alle events uit onze Google
|
header te gebruiken om je access token in te zetten! Als je het goed doet krijg je alle events uit onze Google Calender
|
||||||
Calender te zien in JSON formaat.</p>
|
te zien in JSON formaat.</p>
|
||||||
|
|
||||||
<img src="static/img/oauth_google_call_api.png" class="screenshot" style="width: 70%; margin: 20px; display: block">
|
<img src="static/img/oauth_google_call_api.png" class="screenshot" style="width: 70%; margin: 20px; display: block">
|
||||||
|
|
||||||
<div class="question">
|
<div class="question">
|
||||||
<span class="question-string">Wat is de code die in de Geheime afspraak staat? </span>
|
<span class="question-string">Wat is de code die in de Geheime afspraak staat? </span>
|
||||||
{% include "points.html" with points=answers.answer_oauth_calendar_secret_code.points max="10" %}
|
|
||||||
<input class="question-input" name="answer_oauth_calendar_secret_code" value="{{ answers.answer_oauth_calendar_secret_code.string }}"></input>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>Genoeg tutorial, tijd voor het echte werk! We gaan handmatig het hele OAuth proces doorlopen voor een Google API. Dat mag
|
<p>Genoeg tutorial, tijd voor het echte werk! We gaan handmatig het hele OAuth proces doorlopen voor een Google API. Dat mag
|
||||||
@@ -350,8 +332,6 @@
|
|||||||
<div class="question">
|
<div class="question">
|
||||||
<span class="question-string">Beschrijf de HTTP requests die je hebt gemaakt om de token te krijgen EN de API te gebruiken (en ook de uitkomst van die
|
<span class="question-string">Beschrijf de HTTP requests die je hebt gemaakt om de token te krijgen EN de API te gebruiken (en ook de uitkomst van die
|
||||||
requests). Gevoelige data mag je met ***** censureren.</span>
|
requests). Gevoelige data mag je met ***** censureren.</span>
|
||||||
{% include "points.html" with points=answers.answer_oauth_google_requests.points max="15" %}
|
|
||||||
<textarea class="question-input" name="answer_oauth_google_requests" style="height: 200px">{{ answers.answer_oauth_google_requests.string }}</textarea>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h3>Mini webapp</h3>
|
<h3>Mini webapp</h3>
|
||||||
@@ -364,8 +344,6 @@
|
|||||||
|
|
||||||
<div class="question">
|
<div class="question">
|
||||||
<span class="question-string">Plak de broncode van je webapplicatie in het tekstvak</span>
|
<span class="question-string">Plak de broncode van je webapplicatie in het tekstvak</span>
|
||||||
{% include "points.html" with points=answers.answer_oauth_web_app.points max="20" %}
|
|
||||||
<textarea class="question-input" name="answer_oauth_web_app" style="height: 200px">{{ answers.answer_oauth_web_app.string }}</textarea>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
@@ -6,9 +6,25 @@ from quiz.models import LetsEncryptChallenge
|
|||||||
from oauth2_provider.views.generic import ProtectedResourceView
|
from oauth2_provider.views.generic import ProtectedResourceView
|
||||||
import datetime
|
import datetime
|
||||||
import pytz
|
import pytz
|
||||||
|
from django.contrib.auth import login
|
||||||
|
from django.contrib.auth.models import User
|
||||||
|
|
||||||
|
|
||||||
def home(request, url):
|
def home(request, url):
|
||||||
|
|
||||||
|
if not request.user.is_authenticated:
|
||||||
|
|
||||||
|
try:
|
||||||
|
user = User.objects.get()
|
||||||
|
except User.DoesNotExist:
|
||||||
|
user = User.objects.create_user(
|
||||||
|
'cursist', 'cursist@websec.paulwagener.nl', 'cursist')
|
||||||
|
user.save()
|
||||||
|
|
||||||
|
login(request, user)
|
||||||
|
|
||||||
|
# Make sure there is always a user
|
||||||
|
|
||||||
if url == 'sql' or url == '':
|
if url == 'sql' or url == '':
|
||||||
template = 'sql.html'
|
template = 'sql.html'
|
||||||
elif url == 'xss':
|
elif url == 'xss':
|
||||||
|
|||||||
Reference in new issue
Block a user