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にパーミッションかける