ASP.NETでクライアント(アクセス元)IPアドレスをIPv4で取得する方法

http://www.4guysfromrolla.com/articles/071807-1.aspx
System.Web.HttpContext.Current.Request.UserHostAddressでIPv6が取得されてしまう場合に、IPv6ではなくIPv4のアドレスを取得するには以下のようにする。

Public Shared Function GetIP4Address() As String
  Dim IP4Address As String = String.Empty

  For Each IPA As IPAddress In Dns.GetHostAddresses(HttpContext.Current.Request.UserHostAddress)
    If IPA.AddressFamily.ToString() = "InterNetwork" Then
      IP4Address = IPA.ToString()
      Exit For
    End If
  Next

  If IP4Address <> String.Empty Then
    Return IP4Address
  End If

  'ここは、IPv4が取得できなかったとき代わりにクライアントIPではなくホストIP(ASP.NETを実行しているマシンのIP)を取得するというコード
  'For Each IPA As IPAddress In Dns.GetHostAddresses(Dns.GetHostName())
  '  If IPA.AddressFamily.ToString() = "InterNetwork" Then
  '    IP4Address = IPA.ToString()
  '    Exit For
  '  End If
  'Next

  Return IP4Address
End Function

https://codeday.me/jp/qa/20190401/522769.html
そしてIPv4アドレスをサクッと取るのは実は無理らしい。

魔法のIPV4IPV6コンバータはありません。それらは完全に異なるプロトコルであり、
一方のアドレスは他方のアドレスに変換されません。
クライアントのIPV4アドレスを確実に取得したい場合は、クライアントがIPV4を介して
接続していることを確認する必要があります。



なぜか知らんが日本語で検索すると、ASP.NETでクライアントIPを取得するというタイトルで、ホストのIPv4アドレスを取得するコードを載せている誤った情報が出てくるので注意。
http://noritarou532.hatenablog.com/entry/2014/07/22/154523
https://www.aiik.net/2019/01/17/asp-net%E3%81%A7%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88ip%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B/

Webスキミング

https://techblog.securesky-tech.com/entry/2019/09/02/130000
ECサイトなどの決済画面に不正なスクリプトを埋め込み、ユーザがフォームに入力したクレジットカード情報を窃取する攻撃。
特定のフォームに入力用ページを改ざんして入力された情報を抜き取る「標的型攻撃」、広告配信システムのライブラリを改ざんすることで、広告が配信されたサイトで入力された情報を抜き取る「サプライチェーン攻撃」がある。
どちらもサービス提供者側のプログラムが改ざんされているので、クライアント側では防御しづらい。



ブラウザが「この画面からはこのドメイン以外とは通信しないよ」というのを明示できればまだ防御できる余地はあるか……?でもそれをやるとCDNライブラリが使えなくなるという問題がある。
ブラウザ動作レベルで規格化された認証がBASIC認証程度しかないのがまずいんだろうか。

『自由とは、他人を害しないすべてのことをなしうることにある。』

http://ch-gender.jp/wp/?page_id=385
1789年、憲法制定国民議会によって採択された「人間と市民の権利の宣言」の第4条(自由の定義・権利行使の限界)で定義された内容。

構造体のデフォルトコンストラクタを定義できない理由はパフォーマンスを上げることが目的

http://atsukanrock.hatenablog.com/entry/20090309/1236656352
デフォルトコンストラクタの定義をするかどうかはオプションにすればええやん、と思う。