<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://homeostasis.scs.carleton.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=WebFund_2024F_Lecture_6</id>
	<title>WebFund 2024F Lecture 6 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://homeostasis.scs.carleton.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=WebFund_2024F_Lecture_6"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2024F_Lecture_6&amp;action=history"/>
	<updated>2026-04-22T17:46:25Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2024F_Lecture_6&amp;diff=24736&amp;oldid=prev</id>
		<title>Soma at 18:07, 26 September 2024</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2024F_Lecture_6&amp;diff=24736&amp;oldid=prev"/>
		<updated>2024-09-26T18:07:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:07, 26 September 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Video==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Video==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Video from the lecture for September 26, 2024 is now available: &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(NOT YET)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Video from the lecture for September 26, 2024 is now available:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://homeostasis.scs.carleton.ca/~soma/webfund-2024f/lectures/comp2406-2024f-lec06-20240926.m4v video]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://homeostasis.scs.carleton.ca/~soma/webfund-2024f/lectures/comp2406-2024f-lec06-20240926.m4v video]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://homeostasis.scs.carleton.ca/~soma/webfund-2024f/lectures/comp2406-2024f-lec06-20240926.cc.vtt auto-generated captions]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://homeostasis.scs.carleton.ca/~soma/webfund-2024f/lectures/comp2406-2024f-lec06-20240926.cc.vtt auto-generated captions]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Soma</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2024F_Lecture_6&amp;diff=24735&amp;oldid=prev</id>
		<title>Soma: Created page with &quot;==Video==  Video from the lecture for September 26, 2024 is now available: (NOT YET) * [https://homeostasis.scs.carleton.ca/~soma/webfund-2024f/lectures/comp2406-2024f-lec06-20240926.m4v video] * [https://homeostasis.scs.carleton.ca/~soma/webfund-2024f/lectures/comp2406-2024f-lec06-20240926.cc.vtt auto-generated captions]  ==Notes==  &lt;pre&gt; Lecture 6 ---------  * Assignment 1 is based on simpleserver2.js, which is a simplified version of formdemo.js  * Assignment 1 will b...&quot;</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2024F_Lecture_6&amp;diff=24735&amp;oldid=prev"/>
		<updated>2024-09-26T17:32:56Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==Video==  Video from the lecture for September 26, 2024 is now available: (NOT YET) * [https://homeostasis.scs.carleton.ca/~soma/webfund-2024f/lectures/comp2406-2024f-lec06-20240926.m4v video] * [https://homeostasis.scs.carleton.ca/~soma/webfund-2024f/lectures/comp2406-2024f-lec06-20240926.cc.vtt auto-generated captions]  ==Notes==  &amp;lt;pre&amp;gt; Lecture 6 ---------  * Assignment 1 is based on simpleserver2.js, which is a simplified version of formdemo.js  * Assignment 1 will b...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Video==&lt;br /&gt;
&lt;br /&gt;
Video from the lecture for September 26, 2024 is now available: (NOT YET)&lt;br /&gt;
* [https://homeostasis.scs.carleton.ca/~soma/webfund-2024f/lectures/comp2406-2024f-lec06-20240926.m4v video]&lt;br /&gt;
* [https://homeostasis.scs.carleton.ca/~soma/webfund-2024f/lectures/comp2406-2024f-lec06-20240926.cc.vtt auto-generated captions]&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Lecture 6&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
* Assignment 1 is based on simpleserver2.js, which is a simplified version of formdemo.js&lt;br /&gt;
&lt;br /&gt;
* Assignment 1 will be due on Oct. 4th at earliest. Code is online, questions should be up in the next day.&lt;br /&gt;
&lt;br /&gt;
* The assignment will be a mix of explaining and writing code based on simpleserver2.js, as well as explaining how you came up with your answers.&lt;br /&gt;
&lt;br /&gt;
* your assignment answers will be a text file following a supplied template&lt;br /&gt;
  - a script will split up your submissions by questions so TAs can grade specific questions rather than entire assignments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When a browser makes an HTTP request, it generally uses one of two types of requests:&lt;br /&gt;
 - GET to get content&lt;br /&gt;
 - POST to submit information to the server&lt;br /&gt;
&lt;br /&gt;
Now, it is often possible to do POST-like things with GET, but you shouldn&amp;#039;t&lt;br /&gt;
 - GET is assumed to be safe to call multiple times (it is idempotent)&lt;br /&gt;
 - POST is assumed to NOT be safe, so repeated form submissions won&amp;#039;t happen without alerting the user&lt;br /&gt;
&lt;br /&gt;
In an HTML form&lt;br /&gt;
 - &amp;lt;form&amp;gt; encloses the form&lt;br /&gt;
 - &amp;lt;input&amp;gt; labels each input widget&lt;br /&gt;
 - &amp;lt;label&amp;gt; is the label for the input widget&lt;br /&gt;
 - name= sets the key used to identify values sent to the server&lt;br /&gt;
 - type= sets the type of input widget used to get user data&lt;br /&gt;
    - some widgets do input validation/constraints&lt;br /&gt;
    - SERVER can never trust that the client did its job,&lt;br /&gt;
      must validate data on its own&lt;br /&gt;
    - so you should validate on the client (for a better user experience)&lt;br /&gt;
      and on the server (for security/integrity/proper functionality, etc)&lt;br /&gt;
 - to submit the form, there is normally a button of type &amp;quot;submit&amp;quot;&lt;br /&gt;
    - submits all data in the form&lt;br /&gt;
&lt;br /&gt;
When we say input validation, we can mean a lot of things&lt;br /&gt;
 - for a date, make sure it is a valid date (e.g., month is between 1 and 12)&lt;br /&gt;
 - but can also include other constraints, such as a credit card expiration date should be in the future, not the past&lt;br /&gt;
 - sometimes types can be used for validation, but type-based validation is almost always partial, there are other constraints&lt;br /&gt;
&lt;br /&gt;
input validation is HARD, give it respect&lt;br /&gt;
 - most application bugs and security issues arise from insufficient input validation&lt;br /&gt;
&lt;br /&gt;
If you take user input on one page and show it to other users without proper input validation/escaping, your app becomes vulnerable to cross-site scripting attacks&lt;br /&gt;
 - name isn&amp;#039;t quite accurate&lt;br /&gt;
 - just means attacker injects code into web app that isn&amp;#039;t run on the server,&lt;br /&gt;
   but is instead run on the client (but a victim user&amp;#039;s browser, not the attacker&amp;#039;s browser)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Soma</name></author>
	</entry>
</feed>