ASP.Netでのwebページ作成 への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 粢田  (社会人) 投稿日時 2023/12/25 11:04:22
>とくま様

ご教示いただきましてありがとうございます。
付け焼刃の知識で始めようとしており、Web三層構造というものをきちんと理解していなかったのでまずはそこから習熟していきたいと思います。
その後、再度とくま様のご指摘を拝見させていただき、活用させていただきます。
また、VB.NETとC#の情報量に関しましてもアドバイスいただき感謝いたします。
まずは学ぶべきことを学んでからと、抜けている箇所をご指摘いただきありがとうございました。

>るきお様

ご教示いただきましてありがとうございます。
VB.NETとC#では書き方が ({}で囲むなど)違うため少し抵抗がありましたが、これを機にC#にも触れてみたいと思います。
Razor Pagesというものを初めて知りましたので、チュートリアルに乗っ取りリンク先の映画DBの作成から取り組んでいきたいと思います。
このような素敵な掲示板の作成にも使用されるフレームワークなのですね。また、ご教示いただきました Webフォーム(Web Forms)は使わないよう気を付けます。
具体例やチュートリアル教材までご教示いただきありがとうございました。 感謝いたします。

投稿者 るきお  (社会人) 投稿日時 2023/12/23 08:26:15
とくまさんも触れているように、今からWebサイトを作るのであれば、VB ではなく、C# を使うことをお勧めします。

言語が変わるとなるとハードルが高く感じられるかもしれませんが、VBとC#は兄弟のような言語なので、一度試してみるとよいと思います。
C# で ASP.NET を使ってWebサイトを作る方法を解説したマイクロソフトの記事を紹介します。

https://learn.microsoft.com/ja-jp/aspnet/core/tutorials/razor-pages/?view=aspnetcore-8.0

この記事はチュートリアル方式になっていて、書いてある通りにやっていくととりあえず動くものができるので、感触をつかむことができると思います。

現時点では、ASP.NETでWebサイトを作るフレームワークがいくつかありますが、この記事では Razor Pages を扱っています。
Razor Pages は私のお勧めのフレームワークでもあり、このVisual Basic中学校の掲示板もASP.NET Razor Pages で作成しています。

なお、以前は ASP.NETでWebサイトを作る場合は Webフォーム(Web Forms)というフレームワークが主流でしたが、このフレームワークは2019年に終了していますので採用しないようにお気を付けください。
投稿者 とくま  (社会人) 投稿日時 2023/12/20 17:13:10
ちなみにVBは言語としては発展しないことが明言されており、
https://qiita.com/noonworks/items/0ce9dfb0635458a3b0f2
web関連のコーディングをするなら、これからはC#の情報が多くなってくると思います。

Googleヒット件数
「VB web」約 415,000,000 件
「C# web」約 346,000,000 件
VBにはExcelVBAが含まれるので情報が多くて当たり前ですが、それでこの差。

「asp.net vb」約 24,700,000 件
「asp.net C#」約 62,100,000 件
asp.net関連だと圧倒的にC#の情報が多くなります。

まぁ、同じ土台なので現状では8割のコードが1:1置換可能ですが、
それゆえ、むしろVBで新しい情報を発信する意味が低くなっています。
新しい情報を検索するなら、C#のキーワードで検索して読み替えた方が良いでしょう。
可能ならC#でコーディングした方が手間は少なくなると思います。
投稿者 とくま  (社会人) 投稿日時 2023/12/20 15:18:08
古くから「Web三層構造」という考え方があって解説サイトも沢山あります。
自分でweb検索して勉強してください。

DBの接続情報をクライアントが知る必要はありません。
クライアントはID,PASSを「ログイン判定」関数に渡すだけで、
サーバサイドがDBの接続情報を持っており、処理結果のtrue,falseを
クライアントへ返すだけです。
DBの処理はサーバサイドで隠蔽されており、クライアントの処理を解析しても
何も処理していない形になります。iniファイルも暗号化も必要ありません。

ログインパスワードの暗号化は、DBに保存するときに不可逆変換するのが今の主流ですかね。
「.net パスワード ハッシュ化」あたりでweb検索すればサンプルコードが転がっています。
これも暗号化処理はサーバサイドに隠蔽し、クライアントからは平文のID,PASSを渡すだけ。
DBに登録するのは暗号化したデータのみで、同じ暗号化処理をすれば一致するという判定にします。
不可逆変換なのでシステム管理者も元のパスワードを知らないとログインできない仕様となります。
※この為、パスワードリセット機能の実装が必須事項となります。

平文を通信するのが怖い場合は、クライアントから1度目の暗号化したID,PASSを通信し、
サーバサイドでも、もう一度、別の暗号化キーで暗号化してDBに保存しても良いでしょう。
投稿者 粢田  (社会人) 投稿日時 2023/12/20 13:20:35
お世話になっております。
Webページを初めて作成するのですが、VB.NETでのWindowsフォームアプリの開発経験が少しあるためASP.NETを使用したいと思います。
内容としましては、社外のユーザーに対しID,PASSを個別に通達し、Webページにてログイン後にDBの一部を照会できるページを作成したいです。
この際、接続文字列等の機密情報はどのように扱うのがよろしいのでしょうか。(iniファイルのようなものに書き込み、処理の途中で読み込ませる等...)
コード上に書くのはセキュリティ上不安で暗号化などをVisualStudioの機能であれば活用したいと思っております。
お忙しい中、恐縮ですがご教示くださいますと幸いです。
よろしくお願いいたします。