test - ryhara/Webserv GitHub Wiki
- [ ]で空のチェックボックス- [X]でチェック済み
Config
- 0_空
- 1_サーバーネームが同じ
- 2_port番号の上限、下限
- 3_セミコロンなし、セミコロンの後ろに文字
- 4_locationがslashで始まって終わってない
- 5_aliasに相対パス含まれる, スラッシュで終わっていない
- 6_セミコロン2つ
- 7_対応外のメソッド
- 8_serverまたは最後のlocationが閉じてない
- 対応外のlocationの中の要素
- 9_indexがディレクトリ
- 10_locationに相対パスが含まれている
- 空行
- コメントアウト
- カッコの周りに余計な要素がある
GET
- curl
- telnet
- python
- locationに登録されていないルートの、サブディレクトリをみれるか
- locationに登録されている、サブディレクトリをみれるか
- telnetで先頭が
../,なかに/../を含む
autoindex
- 一覧で見れるか
- 他のディレクトリへとべるか
- 他のファイルへ飛べるか
redirect
- redirectできるか
POST
- curlでchunked, Content-Length
- telnetでchunked, Content-Length
- pythonでテスト, chunked
- body
- file
- upload_pathを変えてみる
DELETE
- curlでDELETE
- telnetでDELETE
- pythonでDELETE
CGI
- 対応してる拡張子のみ実行できるか
- 実行ファイルにパーミションある場合
- subdir内でも実行できるか
- GET, sh, py
- 対応していない.rbファイルの場合ファイルとして開かれる
- GETでクエリ付き
- POST,sh, py(POSTはファイルを作成するわけではないのでOKを返す)
- POSTでボディつき
- 無限ループ→504
- POSTで.rbなどをやるとbodyのない空ファイルに対するPOSTなので空のファイルが作成される
- chunkedも計算できていることの確認
- DELETEは出来ないようになっているか
Header
- Host名が適当な場合portの一番最初の設定を使う
- 同じportでもHost名が正しい場合Host名の設定を使う
- port番号が無い場合は80番として扱う
- Connection: closeを送った場合→closeになっているtelnetで確認する
- Transfer-EncodingとContent-Length2つある場合エラー
Errorケース
-
Host:つけない→400 Bad Request - 対応していないバージョン505
- 対応していないメソッド→501 Not Implementeed
- methodを許可していない場合→405 Method Not Allowed
- body sizeより大きい値を送る。→413 Payload Too Large
- リクエストライン、スペース多くする、3つ以上にする
- Header、2つ以上の要素、
:SP以外で区切る →400 Bad Request:の1つ目でくぎってるだけだから2つ以上にしても設定できる - chunkedで異なるサイズ送る→400 Bad Request
- Content-Length以上、以下の値を送る→以上の場合、413 Payload Too Large、以下にはならないようにしてる
- 権限系、htmlファイル自体や親ディレクトリにパーミッションかける
- upload_pathにパーミッションかける