Skip to content

Commit 6b9f61b

Browse files
authored
Merge pull request #1477 from KodeStar/2.x
Escape search queries and add setting value on edit
2 parents 1ccc0da + d1a96dd commit 6b9f61b

File tree

5 files changed

+30
-26
lines changed

5 files changed

+30
-26
lines changed

app/Http/Controllers/SearchController.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ public function index(Request $request)
1818
$requestprovider = $request->input('provider');
1919
$query = $request->input('q');
2020

21+
// Sanitize the query to prevent XSS
22+
$query = htmlspecialchars($query, ENT_QUOTES, 'UTF-8');
23+
2124
// Validate the presence and non-emptiness of the query parameter
2225
if (!$query || trim($query) === '') {
2326
abort(400, 'Missing or empty query parameter');

app/Http/Controllers/SettingsController.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public function edit(int $id)
4545
if (! is_null($setting)) {
4646
return view('settings.edit')->with([
4747
'setting' => $setting,
48+
'value' => $setting->value,
4849
]);
4950
} else {
5051
$route = route('settings.list', []);

app/Search.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public static function form(): string
121121
$output .= '<option value="'.$key.'"'.$selected.'>'.$searchprovider['name'].'</option>';
122122
}
123123
$output .= '</select>';
124-
$output .= '<input type="text" name="q" value="'.(Input::get('q') ?? '').'" class="homesearch" autofocus placeholder="'.__('app.settings.search').'..." />';
124+
$output .= '<input type="text" name="q" value="'.e(Input::get('q') ?? '').'" class="homesearch" autofocus placeholder="'.__('app.settings.search').'..." />';
125125
$output .= '<button type="submit">'.ucwords(__('app.settings.search')).'</button>';
126126
$output .= '</div>';
127127
$output .= '</form>';

app/Setting.php

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -150,41 +150,41 @@ public function getEditValueAttribute()
150150
switch ($this->type) {
151151
case 'image':
152152
$value = '';
153-
if (isset($this->value) && ! empty($this->value)) {
154-
$value .= '<a class="setting-view-image" href="'.
155-
asset('storage/'.$this->value).
156-
'" title="'.
157-
__('app.settings.view').
158-
'" target="_blank"><img src="'.
159-
asset('storage/'.
160-
$this->value).
153+
if (isset($this->value) && !empty($this->value)) {
154+
$value .= '<a class="setting-view-image" href="' .
155+
asset('storage/' . $this->value) .
156+
'" title="' .
157+
__('app.settings.view') .
158+
'" target="_blank"><img src="' .
159+
asset('storage/' .
160+
$this->value) .
161161
'" /></a>';
162162
}
163163
$value .= '<input type="file" name="value" class="form-control" />';
164-
if (isset($this->value) && ! empty($this->value)) {
165-
$value .= '<a class="settinglink" href="'.
166-
route('settings.clear', $this->id).
167-
'" title="'.
168-
__('app.settings.remove').
169-
'">'.
170-
__('app.settings.reset').
164+
if (isset($this->value) && !empty($this->value)) {
165+
$value .= '<a class="settinglink" href="' .
166+
route('settings.clear', $this->id) .
167+
'" title="' .
168+
__('app.settings.remove') .
169+
'">' .
170+
__('app.settings.reset') .
171171
'</a>';
172172
}
173-
173+
174174
break;
175175
case 'boolean':
176176
$checked = false;
177-
if (isset($this->value) && (bool) $this->value === true) {
177+
if (isset($this->value) && (bool)$this->value === true) {
178178
$checked = true;
179179
}
180180
$set_checked = ($checked) ? ' checked="checked"' : '';
181181
$value = '
182182
<input type="hidden" name="value" value="0" />
183183
<label class="switch">
184-
<input type="checkbox" name="value" value="1"'.$set_checked.' />
184+
<input type="checkbox" name="value" value="1"' . $set_checked . ' />
185185
<span class="slider round"></span>
186186
</label>';
187-
187+
188188
break;
189189
case 'select':
190190
$options = json_decode($this->options);
@@ -193,21 +193,21 @@ public function getEditValueAttribute()
193193
}
194194
$value = '<select name="value" class="form-control">';
195195
foreach ($options as $key => $opt) {
196-
$value .= '<option value="'.$key.'" '.(($this->value == $key) ? 'selected' : '').'>'.__($opt).'</option>';
196+
$value .= '<option value="' . $key . '" ' . (($this->value == $key) ? 'selected' : '') . '>' . __($opt) . '</option>';
197197
}
198198
$value .= '</select>';
199199
break;
200200
case 'textarea':
201-
$value = '<textarea name="value" class="form-control" cols="44" rows="15"></textarea>';
201+
$value = '<textarea name="value" class="form-control" cols="44" rows="15">' . htmlspecialchars($this->value, ENT_QUOTES, 'UTF-8') . '</textarea>';
202202
break;
203203
default:
204-
$value = '<input type="text" name="value" class="form-control" />';
204+
$value = '<input type="text" name="value" class="form-control" value="' . htmlspecialchars($this->value, ENT_QUOTES, 'UTF-8') . '" />';
205205
break;
206206
}
207-
207+
208208
return $value;
209209
}
210-
210+
211211
public function group(): BelongsTo
212212
{
213213
return $this->belongsTo(\App\SettingGroup::class, 'group_id');

config/app.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
return [
77

8-
'version' => '2.7.2',
8+
'version' => '2.7.3',
99

1010
'appsource' => env('APP_SOURCE', 'https://appslist.heimdall.site/'),
1111

0 commit comments

Comments
 (0)