@Blog{zip358.com}
日常日誌からプログラムやYOUTUBER紹介、旅日記まで日々更新中です。
若気の至り若気の過ちか?Mr.ROBOT🤖
2022.09.11
こんばんは、深夜便で東京に向かってます(嘘です)。
今日は緊急で動画廻してます(記事を書いています)。私が昔書いたコードに大きな脆弱性が合ったので、そのコードの穴だけ塞ぎました。まだ、色々な所に穴があるかもしれないですが・・・。
この脆弱性に関しては知っていたのですが、昔のコードをそのままにしていたのを失念していたのです、それが大きな過ち…。仕事では重大インシデントになりますね😱。
<?php
function defence_xss($data=""){
if(is_array($data)){
foreach ($data as $key => $value) {
$data[$key] = strip_tags($value);
$data[$key] = htmlspecialchars($data[$key],ENT_QUOTES);
}
}else{
$data = strip_tags($data);
$data = htmlspecialchars($data,ENT_QUOTES);
}
return $data;
}
今回、塞いだのは初歩の脆弱性です、、、POSTやGETで送られるデータに悪意のあるコードなどを埋め込んでハッキングを行う手法です。またセッションジャックとかそういうのもありますので、気になる方は調べてみてください。
追記して書いときます。昔勤めていた会社でも何度か、この手の手法でハッキングに合いました。脆弱性が解消されているかは分かりません。XSS攻撃は防げても、これではSQLインジェクション攻撃は防げません、昔のコードで動いているとしたら修正箇所は無数にあるので一日では直せないでしょう。
昔勤めていた会社はShopifyへシステムを移行しているようですが、それが良いのかは分かりません、自分だったら物足りなさを感じると思います😌。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
array, as, data, defence, foreach, function, gt, htmlspecialchars, if, is, key, lt, Mr, php, quot, ROBOT, strip, tags, value, xss, インシデント, コード, それ, 今日, 仕事, 動画, 嘘, 失念, 所, 昔, 東京, 深夜便, 私, 穴, 緊急, 脆弱性, 色々, 若気, 記事,
google NewsをRSSで取得してjsonで返却するPHPプログラム
2018.12.22
<?php
//$_POST["sh"]...検索キーワード
if ($_POST["sh"]) {
$sh = urlencode(@xss_defence($_POST["sh"]));
$res = simplexml_load_file("https://news.google.com/news/rss/headlines/section/q/$sh/?ned=jp&hl=ja&gl=JP");
rss($res);
}
function rss(object $obj = null):void
{
if (isset($obj->channel->item)) {
if ($obj->channel->item) {
$cnt = 0;
foreach ($obj->channel->item as $item) {
$result[$cnt]["title"] = (string)$item->title;
$result[$cnt]["link"] = (string)$item->link;
$result[$cnt]["pubDate"] = (string)$item->pubDate;
$result[$cnt]["description"] = (string)$item->description;
$result[$cnt]["source"] = (string)$item->source;
$cnt++;
}
}
}
echo json_encode($result);
}
function xss_defence(mixed $val):mixed
{
if(!isset($val))return false;
if(is_array($val)){
foreach ($val as $key => $value) {
# code...
$val[$key] = strip_tags($value);
$val[$key] = htmlentities($val[$key],ENT_QUOTES);
}
}else{
$val = strip_tags($val);
$val = htmlentities($val,ENT_QUOTES);
}
return $val;
}
google NewsをRSSで取得してjsonで返却するPHPプログラムです。
ご自由にご使用ください。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
0, channel-, cnt, com, defence, file, foreach, function, gl, Google, gt, headlines, hl, https, if, isset, item, ja, jp, json, load, lt, ned, News, null, obj, object, php, POST, quot, res, RSS, section, sh, simplexml, urlencode, void, xss, キーワード, プログラム, 取得, 検索, 返却,