From 85064357010fca4452a21acbd13cf61496618954 Mon Sep 17 00:00:00 2001
From: Yannic Nevado Hidalgo <yannic.hidalgo@stud.h-da.de>
Date: Mon, 24 Jan 2022 23:20:09 +0100
Subject: [PATCH] add: second alternative

---
 .idea/inspectionProfiles/Project_Default.xml | 16 ++++++++++++++++
 .idea/vcs.xml                                |  6 ++++++
 .idea/workspace.xml                          |  7 +++----
 README.md                                    |  9 +++++++--
 4 files changed, 32 insertions(+), 6 deletions(-)
 create mode 100644 .idea/inspectionProfiles/Project_Default.xml
 create mode 100644 .idea/vcs.xml

diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..d6bdeb5
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,16 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0">
+    <option name="myName" value="Project Default" />
+    <inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
+      <option name="ignoredPackages">
+        <value>
+          <list size="3">
+            <item index="0" class="java.lang.String" itemvalue="python-ldap" />
+            <item index="1" class="java.lang.String" itemvalue="django-auth-ldap" />
+            <item index="2" class="java.lang.String" itemvalue="RPi.GPIO" />
+          </list>
+        </value>
+      </option>
+    </inspection_tool>
+  </profile>
+</component>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index c46bf30..c65c7a2 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -11,11 +11,8 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="f54bb93f-1ebd-4e7e-a94e-f90b5ecaf90a" name="Default Changelist" comment="">
-      <change afterPath="$PROJECT_DIR$/docker-compose.yml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/app.py" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/requirements.txt" beforeDir="false" afterPath="$PROJECT_DIR$/requirements.txt" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -26,6 +23,7 @@
     <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
   </component>
   <component name="ProjectId" id="249a0qEgfC8HD9PTFP9mlVwxDOa" />
+  <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
   <component name="ProjectViewState">
     <option name="hideEmptyMiddlePackages" value="true" />
     <option name="showLibraryContents" value="true" />
@@ -56,6 +54,7 @@
         </entry>
       </map>
     </option>
+    <option name="oldMeFiltersMigrated" value="true" />
   </component>
   <component name="WindowStateProjectService">
     <state x="-1496" y="270" key="#com.intellij.execution.impl.EditConfigurationsDialog" timestamp="1643045084941">
diff --git a/README.md b/README.md
index 132fe26..8fda0d2 100644
--- a/README.md
+++ b/README.md
@@ -13,6 +13,7 @@ pip install -r requirements.txt
 docker-compose up
 
 # Auf dem Server einloggen und sich mit der (default) Datenbank postgres verbinden
+# password: postgres
 psql -h localhost -U postgres -d postgres
 ```
 
@@ -48,12 +49,16 @@ python main.py "'; update users set is_admin = 'true' where username = 'mallory'
 ```
 
 Ruft man nun die Funktion wieder mit dem Benutzernamen auf `python main.py "mallory"` bekommt man statt `False` nun ein `True` zurückgegeben.
-Die Schwachstelle in der Abfrage besteht darin, da keine Überprüfung erfolgt, welcher `string` in die Abfrage übergeben wird. Das Semikolon innerhalb der Abfrage spielt eine Entscheide Rolle, da es SQL Abfragen terminiert. Da keine weitere Überprüfung, des Inhalts erfolgt, den wir an die Funktion übergeben, können wir nun mithilde eines `UPDATE` Befehls Werte innerhalb der Tabelle anpassen.
+Die Schwachstelle in der Abfrage besteht darin, da keine Überprüfung erfolgt, welcher `string` in die Abfrage übergeben wird. Das Semikolon innerhalb der Abfrage spielt auch eine Entscheide Rolle, da es SQL Abfragen terminiert. Da keine weitere Überprüfung, des Inhalts erfolgt, den wir an die Funktion übergeben, können wir nun mithilde eines `UPDATE` Befehls Werte innerhalb der Tabelle anpassen.
 
 Die Schwachstelle im Code (`SQL Abfrage`) kann wie folgt behoben werden:
 
 ```
+# Alternative 1
 """SELECT is_admin FROM users WHERE username = %(username)s """, {'username': username}
+
+# Alternative 2
+"""SELECT is_admin FROM users WHERE username = %s ;""", [username]
 ```
 
-Die Query wird nicht mehr mittels String Interpolation (`'%s' """ % username`) zusammengesetzt und an den Datenbankserver gesendet. Durch Abfrageparameter `%(username)s """, {'username': username}` wird nun sichergestellt, das der richtige Typ und Wert als `Parameter` an die Abfrage übergeben wird.
\ No newline at end of file
+Die Query wird nicht mehr mittels String Interpolation (`'%s' """ % username`) zusammengesetzt und an den Datenbankserver gesendet. Durch die Vermeidung von Single Quotes `%(username)s """, {'username': username}` wird nun sichergestellt, das der richtige Typ und Wert als `Parameter` an die Abfrage übergeben wird.
\ No newline at end of file
-- 
GitLab