{"id":2121,"date":"2021-10-10T22:43:46","date_gmt":"2021-10-10T19:43:46","guid":{"rendered":"https:\/\/www.etemkeskin.com\/?p=2121"},"modified":"2021-11-13T20:44:00","modified_gmt":"2021-11-13T17:44:00","slug":"laravelde-hacklemeyi-onlemek-icin-ip-adresini-kisitlamak-veya-engellemek-icin-bastan-sona-detayli-anlatim","status":"publish","type":"post","link":"https:\/\/www.etemkeskin.com\/index.php\/tr\/2021\/10\/10\/laravelde-hacklemeyi-onlemek-icin-ip-adresini-kisitlamak-veya-engellemek-icin-bastan-sona-detayli-anlatim\/","title":{"rendered":"Laravel&#8217;de Hacklemeyi \u00d6nlemek \u0130\u00e7in Ip Adres Engelleme Ba\u015ftan Sona Detayl\u0131 Anlat\u0131m"},"content":{"rendered":"\n<p>Web ortam\u0131ndaki uygulamalar\u0131m\u0131z\u0131 kullanan k\u00f6t\u00fc niyetli kullan\u0131c\u0131lar bulunabilir. Bu kullan\u0131c\u0131lar ya ba\u015fka ziyaret\u00e7ileri rahats\u0131z edebilir ya da formlar\u0131m\u0131z\u0131 kullanarak(SQL injection gibi&#8230;) uygulamay\u0131 \u00e7\u00f6kertmek isteyebilir. Bu gibi ziyaret\u00e7ilerin iplerini tespit ederek iplerini uygulama seviyesinde engelleyebiliriz. Bu yaz\u0131da Laravel 8&#8242; de k\u00f6t\u00fc niyetli kullan\u0131c\u0131lar\u0131n ip&#8217; leri kara listeye al\u0131narak nas\u0131l engellenece\u011fini anlataca\u011f\u0131m.<\/p>\n\n\n\n<h3>User Tablosuna last_login_at ve last_login_ip Alanlar\u0131n\u0131 Ekleme<\/h3>\n\n\n\n<p>\u0130lk \u00f6nce kullan\u0131c\u0131lar\u0131n uygulamam\u0131za giri\u015f yapt\u0131klar\u0131 andaki zaman bilgilerini ve iplerini <strong>veritaban\u0131<\/strong>na kaydedece\u011fiz. Laravelin <strong>User model<\/strong>i ba\u015flang\u0131\u00e7ta bu alanlara sahip olmad\u0131\u011f\u0131 i\u00e7in bu alanlar\u0131 User tablosuna biz ekleyece\u011fiz. Bunun i\u00e7in ilk \u00f6nce migration dosyalar\u0131n\u0131 olu\u015fturaca\u011f\u0131z. Laravel&#8217; de a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131rarak migration dosyas\u0131n\u0131 olu\u015fturuyoruz.<\/p>\n\n\n\n<p><code>php artisan make:migration add_login_fields_to_users_table<\/code><\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;php&quot;,&quot;mime&quot;:&quot;text\/x-php&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;PHP&quot;,&quot;modeName&quot;:&quot;php&quot;}\">class AddLoginFieldsToUsersTable extends Migration\n{\n    \/**\n     * Run the migrations.\n     *\n     * @return void\n     *\/\n    public function up()\n    {\n        Schema::table('users', function (Blueprint $table) {\n            $table-&gt;datetime('last_login_at')-&gt;nullable();\n            $table-&gt;string('last_login_ip')-&gt;nullable();\n        });\n    }\n}<\/pre><\/div>\n\n\n\n<p>Migration dosyas\u0131na <strong>last_login_at<\/strong> ve <strong>last_login_ip<\/strong> alanlar\u0131n\u0131 ekleyip <code>php artisan migrate<\/code> komutunu terminalde \u00e7al\u0131\u015ft\u0131r\u0131yoruz.<\/p>\n\n\n\n<p><strong>app\\Models\\User.php <\/strong>model php dosyas\u0131nda veritaban\u0131na ekledi\u011fimiz alanlar\u0131 tan\u0131ml\u0131yoruz.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;php&quot;,&quot;mime&quot;:&quot;text\/x-php&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;PHP&quot;,&quot;modeName&quot;:&quot;php&quot;}\">class User extends Authenticatable\n{\n  protected $fillable = [\n        'name',\n        'email',\n        'password',\n    \t'last_login_at', \n    \t'last_login_ip',\n    ];<\/pre><\/div>\n\n\n\n<p>Son ad\u0131mda kullan\u0131c\u0131 web uygulamam\u0131za giri\u015f yapt\u0131\u011f\u0131ndaki ipsini ve giri\u015f zaman\u0131n\u0131 kaydetmek i\u00e7in <strong>LoginController<\/strong>&#8216; daki <strong>authenticated<\/strong> metodunu override ediyoruz. <\/p>\n\n\n\n<p><strong>app\/Http\/Controllers\/Auth\/LoginController.php<\/strong> <\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;php&quot;,&quot;mime&quot;:&quot;text\/x-php&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;PHP&quot;,&quot;modeName&quot;:&quot;php&quot;}\">function authenticated(Request $request, $user)\n{\n    $user-&gt;update([\n        'last_login_at' =&gt; Carbon::now()-&gt;toDateTimeString(),\n        'last_login_ip' =&gt; $request-&gt;getClientIp()\n    ]);\n}<\/pre><\/div>\n\n\n\n<h3>blocked_ips Tablosu <\/h3>\n\n\n\n<p>Daha sonra engellenecek iplerin tutulaca\u011f\u0131 <strong>blocked_ips<\/strong> tablosunu olu\u015fturaca\u011f\u0131z. Bunun i\u00e7in <code>php artisan make:migration create_blocked_ips_table<\/code> migration dosyas\u0131n\u0131 olu\u015fturup i\u00e7ine ip alan\u0131n\u0131 tan\u0131ml\u0131yoruz.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;php&quot;,&quot;mime&quot;:&quot;text\/x-php&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;PHP&quot;,&quot;modeName&quot;:&quot;php&quot;}\">class CreateBlockedIpsTable extends Migration\n{\n    public function up()\n    {\n        Schema::create('blocked_ips', function (Blueprint $table) {\n            $table-&gt;id();\n            $table-&gt;string('ip')-&gt;nullable();\n            $table-&gt;timestamps();\n        });\n    }<\/pre><\/div>\n\n\n\n<p><code>php artisan migrate<\/code> diyerek tablomuzu olu\u015fturuyoruz.<\/p>\n\n\n\n<p>Daha sonra <code>php artisan make:model BlockedIp<\/code> ad\u0131nda modelimizi olu\u015fturuyoruz.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;php&quot;,&quot;mime&quot;:&quot;text\/x-php&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;PHP&quot;,&quot;modeName&quot;:&quot;php&quot;}\">class BlockedIps extends Controller\n{\n    protected $fillable = [\n        'ip'\n    ];\n}<\/pre><\/div>\n\n\n\n<p>Bu tablonun CRUD(create, read, update and delete) i\u015flemleri i\u00e7in <strong>routes\/web.php<\/strong> dosyas\u0131nda route&#8217; lar\u0131 tan\u0131ml\u0131yoruz.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;php&quot;,&quot;mime&quot;:&quot;text\/x-php&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;PHP&quot;,&quot;modeName&quot;:&quot;php&quot;}\">\t\tRoute::get('blocked_ips', 'BlockedIpsController@getAll')-&gt;name('dashboard.blocked_ips');\n\t\tRoute::get('blocked_ips', 'BlockedIpsController@create')-&gt;name('dashboard.create_blocked_ip');;\n\t\tRoute::post('blocked_ips', 'BlockedIpsController@store')-&gt;name('dashboard.store_blocked_ip');;\n\t\tRoute::delete('blocked_ips\/{id}', 'BlockedIpsController@delete')-&gt;name('dashboard.delete_blocked_ip');;<\/pre><\/div>\n\n\n\n<p><code>php artisan make:controller BlockedIps<\/code> komutu ile controller&#8217; \u0131m\u0131z\u0131 olu\u015fturuyoruz. \u0130\u00e7ine kullanaca\u011f\u0131m\u0131z metodlar\u0131 yaz\u0131yoruz.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;php&quot;,&quot;mime&quot;:&quot;text\/x-php&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;PHP&quot;,&quot;modeName&quot;:&quot;php&quot;}\">&lt;?php\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass BlockedIpsController extends Controller\n{\n    public function getAll(Request $request){\n      \ttry{\n            $blocked_ips = \\App\\BlockedIp::get();\n        }catch(\\Exception $e){\n            Log::error('Error when fetching blocked ips' . $e-&gt;getMessage());\n        }\n        return view('blocked_ips', $blocked_ips);\n    }\n  \n  \tpublic function create(Request $request){\n        return view('create_blocked_ip');\n    }\n\n    public function store(Request $request){\n        $params = $request-&gt;all();\n      \n        try{\n            $blocked_ip = new \\App\\BlockedIps();\n            $blocked_ip-&gt;fill($params);\n            $blocked_ip-&gt;save();\n        }catch(\\Exception $e) {\n            Log::error('Admin: new blocked ip error : ' . $e-&gt;getMessage());\n        }\n        return redirect()-&gt;route('dashboard.blocked_ips');\n    }\n\n    public function delete(Request $request, $id){\n      \t$blocked_ip = \\App\\BlockedIp::find($id);\n \t\ttry{\n                $blocked_ip-&gt;delete();\n           }catch(\\Exception $e){\n                Log::error('Admin: delete blocked ip error : ' . $e-&gt;getMessage());\n           }\n        return redirect()-&gt;route('dashboard.blocked_ips');\n    }\n}<\/pre><\/div>\n\n\n\n<p>Controller&#8217; \u0131m\u0131zda olu\u015fturdu\u011fumuz metodlar\u0131 olu\u015fturduktan sonra <strong>view <\/strong>dosyalar\u0131m\u0131z\u0131 olu\u015fturuyoruz.<\/p>\n\n\n\n<p><strong>blocked_ips.blade.php<\/strong> dosyam\u0131zda ip&#8217; leri listeliyoruz.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;htmlmixed&quot;,&quot;mime&quot;:&quot;text\/html&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;HTML&quot;,&quot;modeName&quot;:&quot;html&quot;}\">&lt;h2&gt;Engellenen IP listesi&lt;\/h2&gt;\n    &lt;a href=&quot;{{route('dashboard.create_blocked_ip')}}&quot; class=&quot;btn btn-success&quot; style=&quot;float: right;&quot;&gt;Ip Ekle&lt;\/a&gt;\n    &lt;table class=&quot;table table-hover&quot;&gt;\n        &lt;thead&gt;\n            &lt;tr&gt;\n                &lt;th&gt;IP&lt;\/th&gt;\n                &lt;th&gt;&lt;\/th&gt;\n             &lt;\/tr&gt;\n        &lt;\/thead&gt;\n        &lt;tbody&gt;\n             @for($blocked_ips as $blocked_ip)\n                 &lt;tr&gt;\n                     &lt;td&gt;{{$blocked_ip-&gt;ip}}&lt;\/td&gt;\n                     &lt;td&gt;&lt;a href=&quot;{{route('dashboard.delete_blocked_ip', ['id' =&gt; $blocked_ip-&gt;id])}}&quot; class=&quot;btn btn-danger delete-button&quot;&gt;Sil&lt;\/a&gt;&lt;\/td&gt;\n                 &lt;\/tr&gt;\n             @endfor\n\t\t&lt;\/tbody&gt;\n\t&lt;\/table&gt;<\/pre><\/div>\n\n\n\n<p><strong>add_blocked_ip.blade.php<\/strong> dosyam\u0131zdaki form ile engellemek istedi\u011fimiz ipyi kara listeye al\u0131yoruz.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;haml&quot;,&quot;mime&quot;:&quot;text\/x-haml&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;HAML&quot;,&quot;modeName&quot;:&quot;haml&quot;}\">&lt;form action=&quot;&quot; method=&quot;post&quot; action=&quot;{{ route('dashboard.store_blocked_ip') }}&quot;&gt;\n      &lt;!-- CROSS Site Request Forgery Protection --&gt;\n      @csrf\n      &lt;div class=&quot;form-group&quot;&gt;\n      \t&lt;label&gt;Ip&lt;\/label&gt;\n       \t&lt;input type=&quot;text&quot; name=&quot;ip&quot; required=&quot;required&quot; class=&quot;form-control&quot; placeholder=&quot;___.___.___.___&quot;&gt;\n      &lt;\/div&gt;\n      &lt;button type=&quot;submit&quot; value=&quot;Submit&quot; class=&quot;btn btn-dark btn-block&quot;&gt;Kaydet&lt;\/button&gt;\n&lt;\/form&gt;<\/pre><\/div>\n\n\n\n<h3>RestrictIpMiddleware<\/h3>\n\n\n\n<p>\u015eimdi veri taban\u0131nda ipsini tespit etti\u011fimiz kullan\u0131c\u0131n\u0131n uygulamaya giri\u015fini engellemek i\u00e7in <strong>middleware <\/strong>olu\u015fturaca\u011f\u0131z. Bunun i\u00e7in terminal ekran\u0131nda<code> php artisan make:middleware RestrictIpMiddleware<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131yoruz.<\/p>\n\n\n\n<p><strong>Kernel.php<\/strong> dosyas\u0131ndaki <strong>$middleware<\/strong> arrayine her requestte \u00e7al\u0131\u015fmas\u0131 i\u00e7in RestrictIpAddressMiddleware middleware &#8216;i ekliyoruz.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;php&quot;,&quot;mime&quot;:&quot;text\/x-php&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;PHP&quot;,&quot;modeName&quot;:&quot;php&quot;}\">protected $middleware = [\n        \\App\\Http\\Middleware\\TrustProxies::class,\n        \\Fruitcake\\Cors\\HandleCors::class,\n        \\App\\Http\\Middleware\\PreventRequestsDuringMaintenance::class,\n        \\Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize::class,\n        \\App\\Http\\Middleware\\TrimStrings::class,\n        \\Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull::class,\n    \t\\App\\Http\\Middleware\\RestrictIpAddressMiddleware::class,\n    ];<\/pre><\/div>\n\n\n\n<p><strong>RestrictIpAddressMiddleware.php<\/strong><\/p>\n\n\n\n<p>middleware&#8217; imizin <strong>handle<\/strong> metodunu a\u015fa\u011f\u0131daki gibi d\u00fczenleyerek istenmeyen kullan\u0131c\u0131lar\u0131n uygulamam\u0131z\u0131 kullanmas\u0131n\u0131 engelliyoruz.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;php&quot;,&quot;mime&quot;:&quot;text\/x-php&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;PHP&quot;,&quot;modeName&quot;:&quot;php&quot;}\">&lt;?php\n\nnamespace App\\Http\\Middleware;\n\nuse Closure;\n\nclass RestrictIpAddressMiddleware\n{\n\n    \/\/ Blocked IP addresses\n    public $restrictedIp = [];\n    \n    public function restrictedIp(){\n        $this-&gt;restrictedIp = \\App\\BlockedIps::get();\n    }\n    \n    \/**\n     * Handle an incoming request.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\Closure  $next\n     * @return mixed\n     *\/\n    public function handle($request, Closure $next)\n    {\n        $this-&gt;restrictedIp();\n        if (in_array($request-&gt;ip(), $this-&gt;restrictedIp-&gt;pluck('ip')-&gt;toArray())) {\n            return response()-&gt;json(['message' =&gt; &quot;You are not allowed to access this site.&quot;]);\n        }\n        return $next($request);\n    }\n}\n<\/pre><\/div>\n\n\n\n<p>Art\u0131k istenmeyen kullan\u0131c\u0131lar\u0131n iplerini tespit ederek uygulamam\u0131zdan uzak tutabiliriz.<\/p>\n\n\n\n<p>Ba\u015far\u0131lar &#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Web ortam\u0131ndaki uygulamalar\u0131m\u0131z\u0131 kullanan k\u00f6t\u00fc niyetli kullan\u0131c\u0131lar bulunabilir. Bu kullan\u0131c\u0131lar ya ba\u015fka ziyaret\u00e7ileri rahats\u0131z edebilir ya da formlar\u0131m\u0131z\u0131 kullanarak(SQL injection gibi&#8230;) uygulamay\u0131 \u00e7\u00f6kertmek isteyebilir. Bu gibi ziyaret\u00e7ilerin iplerini tespit ederek iplerini uygulama seviyesinde engelleyebiliriz. Bu yaz\u0131da Laravel 8&#8242; de k\u00f6t\u00fc niyetli kullan\u0131c\u0131lar\u0131n ip&#8217; leri kara listeye al\u0131narak nas\u0131l engellenece\u011fini anlataca\u011f\u0131m. User Tablosuna last_login_at ve last_login_ip [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[68,28],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Laravel&#039;de Hacklemeyi \u00d6nlemek \u0130\u00e7in Ip Adres Engelleme Ba\u015ftan Sona Detayl\u0131 Anlat\u0131m - blog website<\/title>\n<meta name=\"description\" content=\"Uygulamalar\u0131m\u0131z\u0131 geli\u015ftirirken k\u00f6t\u00fc niyetli kullan\u0131c\u0131lar bulunabilir. Bu kullan\u0131c\u0131lar ya ba\u015fka ziyaret\u00e7ileri rahats\u0131z edebilir ya da formlar\u0131m\u0131z\u0131 kullanarak(SQL injection gibi...) uygulamay\u0131 \u00e7\u00f6kertmek isteyebilir. Bu gibi ziyaret\u00e7ilerin iplerini tespit ederek iplerini uygulama seviyesinde engelleyebiliriz. Bu yaz\u0131da Web uygulamalar\u0131nda en \u00e7ok kullan\u0131lan PHP framework\u00fc olan Laravel 8&#039; de k\u00f6t\u00fc niyetli kullan\u0131c\u0131lar\u0131n ip&#039; leri kara listeye al\u0131narak nas\u0131l engellenece\u011fini anlataca\u011f\u0131m.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.etemkeskin.com\/index.php\/tr\/2021\/10\/10\/laravelde-hacklemeyi-onlemek-icin-ip-adresini-kisitlamak-veya-engellemek-icin-bastan-sona-detayli-anlatim\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Laravel&#039;de Hacklemeyi \u00d6nlemek \u0130\u00e7in Ip Adres Engelleme Ba\u015ftan Sona Detayl\u0131 Anlat\u0131m - blog website\" \/>\n<meta property=\"og:description\" content=\"Uygulamalar\u0131m\u0131z\u0131 geli\u015ftirirken k\u00f6t\u00fc niyetli kullan\u0131c\u0131lar bulunabilir. Bu kullan\u0131c\u0131lar ya ba\u015fka ziyaret\u00e7ileri rahats\u0131z edebilir ya da formlar\u0131m\u0131z\u0131 kullanarak(SQL injection gibi...) uygulamay\u0131 \u00e7\u00f6kertmek isteyebilir. Bu gibi ziyaret\u00e7ilerin iplerini tespit ederek iplerini uygulama seviyesinde engelleyebiliriz. Bu yaz\u0131da Web uygulamalar\u0131nda en \u00e7ok kullan\u0131lan PHP framework\u00fc olan Laravel 8&#039; de k\u00f6t\u00fc niyetli kullan\u0131c\u0131lar\u0131n ip&#039; leri kara listeye al\u0131narak nas\u0131l engellenece\u011fini anlataca\u011f\u0131m.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.etemkeskin.com\/index.php\/tr\/2021\/10\/10\/laravelde-hacklemeyi-onlemek-icin-ip-adresini-kisitlamak-veya-engellemek-icin-bastan-sona-detayli-anlatim\/\" \/>\n<meta property=\"og:site_name\" content=\"blog website\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-10T19:43:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-11-13T17:44:00+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.etemkeskin.com\/#website\",\"url\":\"https:\/\/www.etemkeskin.com\/\",\"name\":\"blog website\",\"description\":\"Etem KESK\\u0130N\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/www.etemkeskin.com\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"tr\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.etemkeskin.com\/index.php\/tr\/2021\/10\/10\/laravelde-hacklemeyi-onlemek-icin-ip-adresini-kisitlamak-veya-engellemek-icin-bastan-sona-detayli-anlatim\/#webpage\",\"url\":\"https:\/\/www.etemkeskin.com\/index.php\/tr\/2021\/10\/10\/laravelde-hacklemeyi-onlemek-icin-ip-adresini-kisitlamak-veya-engellemek-icin-bastan-sona-detayli-anlatim\/\",\"name\":\"Laravel'de Hacklemeyi \\u00d6nlemek \\u0130\\u00e7in Ip Adres Engelleme Ba\\u015ftan Sona Detayl\\u0131 Anlat\\u0131m - blog website\",\"isPartOf\":{\"@id\":\"https:\/\/www.etemkeskin.com\/#website\"},\"datePublished\":\"2021-10-10T19:43:46+00:00\",\"dateModified\":\"2021-11-13T17:44:00+00:00\",\"author\":{\"@id\":\"https:\/\/www.etemkeskin.com\/#\/schema\/person\/dcbc30282861ce578b96a79ce8789629\"},\"description\":\"Uygulamalar\\u0131m\\u0131z\\u0131 geli\\u015ftirirken k\\u00f6t\\u00fc niyetli kullan\\u0131c\\u0131lar bulunabilir. Bu kullan\\u0131c\\u0131lar ya ba\\u015fka ziyaret\\u00e7ileri rahats\\u0131z edebilir ya da formlar\\u0131m\\u0131z\\u0131 kullanarak(SQL injection gibi...) uygulamay\\u0131 \\u00e7\\u00f6kertmek isteyebilir. Bu gibi ziyaret\\u00e7ilerin iplerini tespit ederek iplerini uygulama seviyesinde engelleyebiliriz. Bu yaz\\u0131da Web uygulamalar\\u0131nda en \\u00e7ok kullan\\u0131lan PHP framework\\u00fc olan Laravel 8' de k\\u00f6t\\u00fc niyetli kullan\\u0131c\\u0131lar\\u0131n ip' leri kara listeye al\\u0131narak nas\\u0131l engellenece\\u011fini anlataca\\u011f\\u0131m.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.etemkeskin.com\/index.php\/tr\/2021\/10\/10\/laravelde-hacklemeyi-onlemek-icin-ip-adresini-kisitlamak-veya-engellemek-icin-bastan-sona-detayli-anlatim\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.etemkeskin.com\/index.php\/tr\/2021\/10\/10\/laravelde-hacklemeyi-onlemek-icin-ip-adresini-kisitlamak-veya-engellemek-icin-bastan-sona-detayli-anlatim\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.etemkeskin.com\/index.php\/tr\/2021\/10\/10\/laravelde-hacklemeyi-onlemek-icin-ip-adresini-kisitlamak-veya-engellemek-icin-bastan-sona-detayli-anlatim\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ana sayfa\",\"item\":\"https:\/\/www.etemkeskin.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel&#8217;de Hacklemeyi \\u00d6nlemek \\u0130\\u00e7in Ip Adres Engelleme Ba\\u015ftan Sona Detayl\\u0131 Anlat\\u0131m\"}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.etemkeskin.com\/#\/schema\/person\/dcbc30282861ce578b96a79ce8789629\",\"name\":\"etemkeskin\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.etemkeskin.com\/#personlogo\",\"inLanguage\":\"tr\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6af0148b790691ed24ae245fb3dc773b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6af0148b790691ed24ae245fb3dc773b?s=96&d=mm&r=g\",\"caption\":\"etemkeskin\"},\"url\":\"https:\/\/www.etemkeskin.com\/index.php\/author\/etemkeskinyahoo-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/www.etemkeskin.com\/index.php\/wp-json\/wp\/v2\/posts\/2121"}],"collection":[{"href":"https:\/\/www.etemkeskin.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.etemkeskin.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.etemkeskin.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.etemkeskin.com\/index.php\/wp-json\/wp\/v2\/comments?post=2121"}],"version-history":[{"count":44,"href":"https:\/\/www.etemkeskin.com\/index.php\/wp-json\/wp\/v2\/posts\/2121\/revisions"}],"predecessor-version":[{"id":2202,"href":"https:\/\/www.etemkeskin.com\/index.php\/wp-json\/wp\/v2\/posts\/2121\/revisions\/2202"}],"wp:attachment":[{"href":"https:\/\/www.etemkeskin.com\/index.php\/wp-json\/wp\/v2\/media?parent=2121"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.etemkeskin.com\/index.php\/wp-json\/wp\/v2\/categories?post=2121"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.etemkeskin.com\/index.php\/wp-json\/wp\/v2\/tags?post=2121"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}