このURLのルートを暗号化する必要がありますか?なぜなら、ユーザーはアイテムIDを変更することによってURLにアクセスする必要がないからです。たとえば、/ items/1234を/ item/5678に変更することができます。アイテム1234とアイテム5678は同じユーザーに属していますが、まだ動作を制限したいと考えています。私がしようとしているのはルートを暗号化することですが、これが正しい方法であるかどうかはわかりません。助言がありますか?laravelを暗号化する方法5.2 URLまたはルート?
答えて
urlパラメータを暗号化し、コントローラで復号化することができます。これを試すことができます:
あなたの見解では、あなたのパラメータがあなたが暗号化できるid以上のパラメータであるとします。
<?php
$parameter =[
'id' =>1,
];
$parameter= Crypt::encrypt($parameter);
?>
<a href="{{url('/url/',$parameter)}}" target="_blank">a link</a>
あなたのルートは次のようになります。
Route::get('/url/{parameter}', 'YourContro[email protected]');
あなたのコントローラでは、あなたのパラメータを復号化することができます
public function methodName($id){
$data = Crypt::decrypt($id);
}
あなたは、コントローラ
のあなたの一番上にあるあんた墓所の名前空間でなければなりませんuse Illuminate\Support\Facades\Crypt;
注:ca n暗号化URLパラメータCrypt::encrypt($parameter)
で復号化し、Crypt::decrypt($parameter)
で復号化します。
私はルートを暗号化できますか? –
routes/urlを通過するビューからすべてのパラメータを暗号化できます。コントローラのパラメータを復号化するだけです。それでおしまい。 - –
はい、あなたは正しいですが、私は経路と同様にパラメータを暗号化します。 –
暗号化URL ID /任意のURLパラメータが必要です。これはID難読化と呼ばれます。あなたはhashids libraryでそれを行うことができます。 のような整数をyr8に変換して再び戻します。
は、このライブラリを含める:
composer require hashids/hashids
あなたはEasy id obfuscation with Laravel 5
から他のすべての簡単なものを得ることができます。これは、URLのID暗号化するのに役立ちます:
TOhttp://example.com/users/123
を
http://example.com/users/Mj3
これがうまくいくと思います!
http:// example.com/users/Mj3'からhttp:// example.com/hjksdhsdfssdf8/Mj3にこのようなURLを入力したい –
私はこのためにパッケージを含める必要はないと思いますシンプルな機能。質問者がこのルートを下っていたなら、確かにあなたが提案するパッケージほど重くない単純な関数をアプリケーションで作成するほうがよいでしょう。 –
@JoshBoltonあなたは正しいですが、これは何か異なるものです。 youtubeのURLのような例を取ることができます。 –
すべてのルートを暗号化する必要はありません。悪い習慣です。 encrypt()
ヘルパーを使用してパラメータを暗号化し、decrypt()
を復号化することができます。
$encryptedId = encrypt($id);
あなたが全体の経路を暗号化するように聞こえます。それは良い習慣ではないかもしれませんが、ここでそれを行う方法です。すべての要求を受け取るコントローラーが1つあります。すべてのビジネスロジックをお客様のサービスに配置する必要があります。
ルートファイルには、 "/ {encrypted}"とコントローラ@メソッド(名前はあなた次第です)を指すルートがあります。
コントローラメソッドでは、暗号化されたparamを復号化します。おそらく、解読された文字列は "item/100"です。その後、
$routeParams = explode('/', $decrypted);
が必要となり、処理するサービスに送信します。例えば基本的な考え方だ
if($routeParams[0] == 'item') { return ItemService::get($routeParams[1]); }
。しかし実際には、暗号化されたURLのルーティングを管理するハンドラクラスがあります。このハンドラクラスでは、Laravelのルートファイルと同様に機能するconfig配列が必要です。
この問題を軽減できる方法の1つは、Universally Unique ID(UUID)を使用することです。
自動インクリメントデータベースクロールの問題はなくなり、ユーザーは異なるデータを取得するためにURLを変更することはできません。これに
$table->increments('id');
:あなたは非常に簡単に
これからあなたのidカラムを変更することによって、あなたの移行でこれをサポートするために、データベースを変更することができます
$table->uuid('id')->primary();
あなたのモデルができますクラスに次のものを追加して、非インクリメンタルプライマリキーをサポートするように編集してください:
リダイレクトながらprotected $incrementing = false;
これは間違いなくこの問題に取り組むより良い方法ですが、通常の規約に従っていますが、より堅牢な方法でユーザーのIDを保護しています – zealisreal
あなたは
$product_id = \Crypt::decrypt($url_parameter)
を使用してURLから製品IDを復号化することができます
\Crypt::encrypt(product_id)
と製品ページ上を使用して、あなたのコントローラにルートを暗号化することができますそれが最善の方法です。
しかし、ユーザーの編集が処理する必要があるURLからプロダクトIDパラメータを取得する場合、例外が発生する可能性があります。
- 1. マージURLパラメータと暗号化されたURLを生成 - Laravel 5.3
- 2. 暗号化されたURLを統合テストする方法
- 3. codeigniterのurlパラメータを暗号化する方法は?
- 4. Laravel暗号化の暗号を変更します。
- 5. URLからビデオを暗号化し、暗号化されたビデオをデバイスのSDカードに保存する方法
- 6. JavaScriptでURLを暗号化してCで復号化する方法#
- 7. app.configを暗号化する方法は?
- 8. デフォルトの暗号化タイプlaravel
- 9. Yii URLの暗号化/復号化
- 10. laravelのURL暗号化の仕組みは?
- 11. androidのURLを暗号化する方法
- 12. ckeditorの画像アップロードURLを暗号化する方法
- 13. backbone.jsでURLを暗号化する方法
- 14. Laravel 5.2 - ルート認証
- 15. Grailsドメインクラスの列を暗号化/復号化する方法は?
- 16. チャンク内のデータを暗号化/復号化する方法は?
- 17. コアデータのデータを暗号化/復号化する方法は?
- 18. テキスト暗号化/復号化方法Java
- 19. NotFoundHttpExceptionはルートPHP Laravel 5.2
- 20. Laravel 5.2モジュールのルートは
- 21. パスワードをmd5からlaravelの暗号化方法に変換する方法
- 22. PHPでURLを暗号化するCodeigniter
- 23. codeigniterのURL暗号化
- 24. Laravelのリソースとルートを宣言する方法5.2
- 25. iphoneアプリケーションを暗号化する方法
- 26. Heroku - データベースを暗号化する方法
- 27. log4netログファイルを暗号化する方法
- 28. JSONオブジェクトを暗号化する方法
- 29. Chilkat:暗号化された電子メールを復号化する方法は?
- 30. パスワードの暗号化方法
あなたはそれをあなたのコントローラ内で暗号化できません。 – Beginner
"アイテム1234と5678は同じユーザーに属していますが、依然として動作を制限したい"どうして? – Abhishek
実際にこれを行ういくつかの問題/ユースケースがある場合、そのユースケースを持つミドルウェアを作成してください – Abhishek