SlideShare une entreprise Scribd logo
1  sur  12
Télécharger pour lire hors ligne
PHP
PDOでデータベース接続と
SQLインジェクション対策
2021/03/12
TaKo
はじめに
PHPからデータベースに接続・操作する方法について紹介
おまけでSQLインジェクション対策
手段は複数あるが、PDOでおおよそ対応可能なようす...
表1. PHPのデータベース関連のモジュール
拡張モジュール名 概要
DBA dbm形式のデータベースに対応するDB抽象化レイヤ
dbx マニュアルを読んでもよくわからなかったので割愛
ODBC マニュアルを読んでもよくわからなかったので割愛
PDO
様々なDBMSに対応
軽量で高性能なインターフェイスを提供してくれる(らしい)
*ベンダー固有のモジュールも用意されているが割愛
環境情報
表2. 環境情報
バージョン
CentOS 7.9.2009
PHP 7.4.14
MySQL 8.0.23
表3. PHPモジュール
備考
PDO DB抽象化レイヤ
pdo-mysql PDOのMySQL用ドライバ
mysqlnd クライアントライブラリ
拡張モジュールPDO
PHP Data Objects(PDO)拡張モジュールとは
•PHPからDBMSを操作できるようにするモジュール
•DBMSの種類に関わらず、(ほぼ)同じ記述で接続・操作が可能
PDOの使い方:接続
try {
$dsn = '<DBMS名>:host=<ホスト名>; dbname=<データベース名>; charset=<文字エンコード>';
$user = '<ユーザ名>';
$password = '<パスワード>';
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false,
];
$pdo = new PDO($dsn, $user, $password, $options);
} catch (PDOException $e) {
echo '接続失敗: ' . $e->getMessage() . "n";
exit(1);
}
Data Source Name (dsn)
データベースに接続するために必要な情報
「DBMS名」と「ホスト名」は必須, データベース名は基本的には必須
ドライバオプション
必須ではないが、クエリの実行エラーをどう処理するかを指定したり、
クエリのエミュレーションをDBMS側で行うように設定可能
必要な情報をや設定を引数に指定して、PDOクラスをインスタンス化することで任意のDBMSに接続可能
一般的に$pdoまたは$dbhという変数名が使われる
接続を切るときはnullを代入する
PDOの使い方:接続
表4. DBMS, DBの情報
DBMS MySQL
ホスト localhost
ユーザ pdo_user
パスワード password
DB名 pdo_test
Table名 user
try {
$dsn = 'mysql:host=localhost; dbname=pdo_test; charset=utf8mb4';
$user = 'pdo_user';
$password = 'password';
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false,
];
$pdo = new PDO($dsn, $user, $password, $options);
} catch (PDOException $e) {
echo '接続失敗: ' . $e->getMessage() . "n";
exit(1);
}
↑の例の場合、
localhostにあるMySQLの、pdo_testというデータベースにpdo_user/passwordで接続する。
文字エンコードはutf8mb4
ドライバオプションの設定
・「クエリ実行時エラーがあった場合例外をスローする」
・「プリペアードステートメントのエミュレーションはDBMS側で行う」
PDOの使い方:クエリの実行と結果の取得
try {
$result = $pdo->query("SELECT * FROM user");
$data['users'] = $result->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOExseption $e) {
echo "クエリ実行時エラー: " . $e->getMessage() . "n";
}
クエリが固定の場合
クエリが可変の場合
$post_id = $_POST['id'];
try {
$prepare = $pdo->prepare("SELECT * FROM user WHERE id= :id");
$prepare->bindValue('id', $post_id, PDO::PARAM_INT);
$prepare->execute();
$data['user'] = $prepare->fetch(PDO::FETCH_ASSOC);
} catch (PDOExseption $e) {
echo "クエリ実行時エラー: " . $e->getMessage() . "n";
}
query関数
クエリの実行しその結果をPDOStatement
オブジェクトとして返す
クエリの実行のみ帰り値が不要な場合はexec関数を
使用
fetchAll関数
全ての結果を配列で返す
引数でカラム名を添字にしたり特定カラムのみ取得する
ようにできる
prepare関数
実行するクエリを設定する。
ユーザ入力などでクエリを変化させたい時に利用する
bindValue関数
クエリのプレースホルダに値をバインドする
引数はプレースホルダ名、値、カラムの型
execute関数:設定されたクエリを実行
fetch関数
結果から一行取得して配列で返す
実行するたびに次のレコードを取得できる
SQLインジェクション対策
SQLインジェクション攻撃とは
ウェブサイトの入力フォームで不正なSQL文を送信して、
データベースから機密情報を盗んだり、改ざんする攻撃手法のこと
不正にログインや、Webサイトウイルスをしこまれてしまったり
最悪、サーバ乗っ取りの足掛かりに...
被害事例
‘当社が運営するWebサイト(https://www.kogensha.jp/)におきまして、不正アクセスがあり、ご登録情報が一部流
出した可能性があることが判明しました。

なお、現在のところ当該情報を悪用された被害の報告は入っておりません。’

‘ログ解析の結果、攻撃手法は、 URLの末尾のパラメータと呼ばれる箇所に不正なデータベースコマンドを混入さ
せ、本来とは異なる情報を表示させようと試みる「SQLインジェクション」と判明しました。’

引用:光言社 ポータルサイト - 当社ホームページへの不正アクセス事件のご報告とお詫び, https://www.kogensha.jp/information/detail.php?id=1612, (2020/04/16)
SQLインジェクション対策
PHP7.4 : PDOモジュールを使う場合
1. 権限を絞った専用のユーザで接続する
→万が一の時、被害を抑制するため
2. 文字エンコードを必ず指定する
→プレースホルダを正常に使用するために必要
3. 例外処理で接続・操作部分をくくる
→例外をスルーするようにオプションを設定しておく
4. クエリの組み立てには静的プレースホルダを用いる
→文字列連結でクエリを組み立てるのはNG
→動的プレースホルダはSQLインジェクションができる可能性
5. プレースホルダのバインド時に型を指定する
→データベース側でどの型になるのか指定する
SQLインジェクション対策
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false,
];
$pdo = new PDO($dsn, $user, $password, $options);
$id = $_POST['id']
$prepare = $pdo->prepare("SELECT * FROM user WHERE id=" . $id . ";");
$prepare = $pdo->prepare("SELECT * FROM user WHERE id=:id;");
$prepare->bindValue('id', $id, PDO::PARAM_INT);
または↓
$prepare = $pdo->prepare("SELECT * FROM user WHERE id=?;");
$prepare->bindParam('1', $id, PDO::PARAM_INT);
PHP7.4 : PDOモジュールを使う場合
例外をスローする設定
クエリ設定の部分推奨の例
クエリ設定の部分悪い例
SQLインジェクション対策
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false,
];
$pdo = new PDO($dsn, $user, $password, $options);
$id = $_POST['id']
$prepare = $pdo->prepare("SELECT * FROM user WHERE id=" . $id . ";");
$prepare = $pdo->prepare("SELECT * FROM user WHERE id=:id;");
$prepare->bindValue('id', $id, PDO::PARAM_INT);
または↓
$prepare = $pdo->prepare("SELECT * FROM user WHERE id=?;");
$prepare->bindParam('1', $id, PDO::PARAM_INT);
文字エンコードの設定を忘れずに... charset=utf8mb4
PHP7.4 : PDOモジュールを使う場合
権限を絞ったユーザを作成して、かならずパスワードを設定する
たとえば...
CREATE USER 'pdo_user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON pdo_test.* to 'pdo_user'@'localhost';
SQLインジェクション対策
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false,
];
$pdo = new PDO($dsn, $user, $password, $options);
$id = $_POST['id']
$prepare = $pdo->prepare("SELECT * FROM user WHERE id=" . $id . ";");
$prepare = $pdo->prepare("SELECT * FROM user WHERE id=:id;");
$prepare->bindValue('id', $id, PDO::PARAM_INT);
または↓
$prepare = $pdo->prepare("SELECT * FROM user WHERE id=?;");
$prepare->bindParam('1', $id, PDO::PARAM_INT);
静的プレースホルダを使う設定
bindValue関数またはbindParam関数で値の型(PARAM_*)を指定してをバインド
PHP 7.4 : PDOモジュールを使う場合
クエリを文字列連結で入れるのはダメ!

Contenu connexe

Tendances

現場で役に立たないsudoの使い方
現場で役に立たないsudoの使い方現場で役に立たないsudoの使い方
現場で役に立たないsudoの使い方
(^-^) togakushi
 
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
Masatoshi Tada
 

Tendances (20)

CPythonを読もう
CPythonを読もうCPythonを読もう
CPythonを読もう
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
 
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
 
フィルタドライバ入門
フィルタドライバ入門フィルタドライバ入門
フィルタドライバ入門
 
MongoDBの監視
MongoDBの監視MongoDBの監視
MongoDBの監視
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
 
Springを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイントSpringを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイント
 
Zero Touch Provisioning for CloudBuilders
Zero Touch Provisioning for CloudBuildersZero Touch Provisioning for CloudBuilders
Zero Touch Provisioning for CloudBuilders
 
MVCになぞらえて理解するReact
MVCになぞらえて理解するReactMVCになぞらえて理解するReact
MVCになぞらえて理解するReact
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
今さら聞けないDiとspring
今さら聞けないDiとspring今さら聞けないDiとspring
今さら聞けないDiとspring
 
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
 
現場で役に立たないsudoの使い方
現場で役に立たないsudoの使い方現場で役に立たないsudoの使い方
現場で役に立たないsudoの使い方
 
RESTfulとは
RESTfulとはRESTfulとは
RESTfulとは
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 
Riverpodでテストを書こう
Riverpodでテストを書こうRiverpodでテストを書こう
Riverpodでテストを書こう
 
Spring 2.0 技術手冊第七章 - Spring Web MVC 框架
Spring 2.0 技術手冊第七章 - Spring Web MVC 框架Spring 2.0 技術手冊第七章 - Spring Web MVC 框架
Spring 2.0 技術手冊第七章 - Spring Web MVC 框架
 
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 

Similaire à PDOでデータベース接続と SQLインジェクション対策

Web技術勉強会 20100925
Web技術勉強会 20100925Web技術勉強会 20100925
Web技術勉強会 20100925
龍一 田中
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
 
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1
Makoto Haruyama
 
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
azuma satoshi
 
PerlとSQLのいろいろ
PerlとSQLのいろいろPerlとSQLのいろいろ
PerlとSQLのいろいろ
Takuya Tsuchida
 
第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)
Masanori Machii
 
次世代DaoフレームワークDoma
次世代DaoフレームワークDoma次世代DaoフレームワークDoma
次世代DaoフレームワークDoma
Toshihiro Nakamura
 
Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理
土岐 孝平
 

Similaire à PDOでデータベース接続と SQLインジェクション対策 (20)

メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
 
Web技術勉強会 第25回
Web技術勉強会 第25回Web技術勉強会 第25回
Web技術勉強会 第25回
 
Web技術勉強会 20100925
Web技術勉強会 20100925Web技術勉強会 20100925
Web技術勉強会 20100925
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1
 
Mongo db勉強会
Mongo db勉強会Mongo db勉強会
Mongo db勉強会
 
PHP+DB
PHP+DBPHP+DB
PHP+DB
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方
 
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのかSecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
 
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
 
第21回Creators MeetUp
第21回Creators MeetUp第21回Creators MeetUp
第21回Creators MeetUp
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
 
PerlとSQLのいろいろ
PerlとSQLのいろいろPerlとSQLのいろいろ
PerlとSQLのいろいろ
 
第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)
 
LexADV_TryDDM Ver. 0.1bの概要
LexADV_TryDDM Ver. 0.1bの概要LexADV_TryDDM Ver. 0.1bの概要
LexADV_TryDDM Ver. 0.1bの概要
 
次世代DaoフレームワークDoma
次世代DaoフレームワークDoma次世代DaoフレームワークDoma
次世代DaoフレームワークDoma
 
Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理
 
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
 
HDPをWindowsで動かしてみた
HDPをWindowsで動かしてみたHDPをWindowsで動かしてみた
HDPをWindowsで動かしてみた
 

Plus de iPride Co., Ltd.

AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
iPride Co., Ltd.
 

Plus de iPride Co., Ltd. (20)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
AWS_Bedrock入門 このスライドは2024/03/08の勉強会で発表されたものです。
AWS_Bedrock入門 このスライドは2024/03/08の勉強会で発表されたものです。AWS_Bedrock入門 このスライドは2024/03/08の勉強会で発表されたものです。
AWS_Bedrock入門 このスライドは2024/03/08の勉強会で発表されたものです。
 
AWS Lambdaと AWS API Gatewayを使ったREST API作り
AWS Lambdaと AWS API Gatewayを使ったREST API作りAWS Lambdaと AWS API Gatewayを使ったREST API作り
AWS Lambdaと AWS API Gatewayを使ったREST API作り
 
AWS (Amazon Web Services) を勉強してみる その3 2024/03/01の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる その3 2024/03/01の勉強会で発表されたものです。AWS (Amazon Web Services) を勉強してみる その3 2024/03/01の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる その3 2024/03/01の勉強会で発表されたものです。
 
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
 
可用性・セキュリティを考慮して AWSでDrupalを構築する 2024/02/09の勉強会で発表されたものです。
可用性・セキュリティを考慮して AWSでDrupalを構築する 2024/02/09の勉強会で発表されたものです。可用性・セキュリティを考慮して AWSでDrupalを構築する 2024/02/09の勉強会で発表されたものです。
可用性・セキュリティを考慮して AWSでDrupalを構築する 2024/02/09の勉強会で発表されたものです。
 
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
 
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
 
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものですAWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
 
AWS SAM入門 2024/01/26の勉強会で発表されたものです【アイ・プライド】
AWS SAM入門  2024/01/26の勉強会で発表されたものです【アイ・プライド】AWS SAM入門  2024/01/26の勉強会で発表されたものです【アイ・プライド】
AWS SAM入門 2024/01/26の勉強会で発表されたものです【アイ・プライド】
 
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
 
ChatGPTを用いてCDKを勉強
ChatGPTを用いてCDKを勉強ChatGPTを用いてCDKを勉強
ChatGPTを用いてCDKを勉強
 
OpenID Connectについて
OpenID ConnectについてOpenID Connectについて
OpenID Connectについて
 
画像生成AIの問題点
画像生成AIの問題点画像生成AIの問題点
画像生成AIの問題点
 
AI入門
AI入門AI入門
AI入門
 

PDOでデータベース接続と SQLインジェクション対策