C#

パスワード強度評価ツールzxcvbnをC#で使う

年始から始まったデジタルのアカウントの処分ですが、日本の金融系(銀行、証券会社、クレジットカードなど)のウェブアプリのパスワードの弱さが気になります。 特に、ニッセイ確定拠出年金などは「半角数字4~7桁」とのこと。ニッセイ確定拠出年金は出来れば…

System.Data.SqlClient を Microsoft.Data.SqlClient に変更してもそのまま動いてラッキー

5年以上前に書いて、そのままずっと運用していたC#のプログラムを書き直すことになった。 ついでに諸々のライブラリやフレームワークもアップデートすることにした。 System.Data.SqlClientはすでにメンテナンスが終了しており、Microsoft.Data.SqlClientに…

C#でBcryptアルゴリズムを利用する

BcryptアルゴリズムはPBKDF2アルゴリズムと同様に、ソルト(同一パスワードから同一ハッシュ値が生成されるのを避けるためのユーザーごとに異なる値)とストレッチ(= イテレーション)を備えたパスワードハッシュ方法の一つです。 関連記事: mrgchr.hatenablog.…

C#でPBKDF2アルゴリズムを利用する

PBKDF2アルゴリズムは、ソルト(同一パスワードから同一ハッシュ値が生成されるのを避けるためのユーザーごとに異なる値)とストレッチ(= イテレーション)を備えたパスワードハッシュ方法の一つです。 C#でPBKDF2アルゴリズムを利用するには、System.Security.…

Dapperにて、TVP(テーブル値パラメーター)を扱う

たとえば、以下のようなテーブル定義と、 CREATE TABLE [dbo].[TodoItems]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](50) NOT NULL, [IsDone] [bit] NOT NULL, CONSTRAINT [PK_TodoItems] PRIMARY KEY CLUSTERED ([Id] ASC) ) 以下のようなユ…

Dapper.SqlBuilderでパラメータ指定するもう少しマシな方法

mrgchr.hatenablog.com 以前の投稿で、Dapper.SqlBuilderにパラメータを渡す際に、 var builder = new SqlBuilder(); var pageTemplate = builder.AddTemplate(pageSql); var countTemplate = builder.AddTemplate(countSql); if (userId.HasValue) { builde…

Dapper.SqlBuilderに機能を追加してみる

Dapper.SqlBuilderはシンプルながら便利なライブラリです。 mrgchr.hatenablog.com 今回は独自機能を追加してみようと思います。

Dapper.SqlBuilderで膨大な数のレコードのページ表示を適応的にする

膨大な数のレコードをページ表示する際に、アプリケーション側にページサイズよりも大きい数のデータを読み込むことは効率的ではありません。 今回はDapper.SqlBuilderを用いてページ表示を効率化させてみます。

DapperのSQLプレースホルダをコーディングミスに強くする方法を考える

(追記アリ) DapperのSQLプレースホルダでコーディングミスをしたので対応策の備忘録です。 文字列でのパラメータ指定が大嫌いなんです DapperやADO.NETはSQL中に"@“から始まる文言を用いることでプレースホルダを表現できます。 例えば下記の例では”@userId"…

Dapperで一対多の関係性をネストされたオブジェクトにマッピングする

Dapperを用いて一対多の関係をマッピングする方法の備忘録です。 例 データベースのテーブル定義は下記の通りです。 CREATE TABLE [dbo].[Users] ( [Id] INT NOT NULL PRIMARY KEY, [Name] NVARCHAR(64) NULL ) CREATE TABLE [dbo].[TodoItems] ( [Id] INT N…