回答編集履歴

2

コードハイライト

2018/03/09 09:31

投稿

asm
asm

スコア15147

test CHANGED
@@ -1,4 +1,4 @@
1
- ```
1
+ ```ruby
2
2
 
3
3
  line = '\u97F3\u9806(\u6607\u9806)'
4
4
 

1

セキュリティリスクを発見

2018/03/09 09:30

投稿

asm
asm

スコア15147

test CHANGED
@@ -4,6 +4,20 @@
4
4
 
5
5
  puts line
6
6
 
7
+ # 以下だと式展開を埋め込まれると厄介
8
+
7
- puts eval "%\0#{line}\0"
9
+ # puts eval "%\0#{line}\0"
10
+
11
+ puts line.split('#').map{|s| eval "%\0#{s}\0"}.join('#')
8
12
 
9
13
  ```
14
+
15
+
16
+
17
+ - \0を区切り文字にした%リテラルを用いる
18
+
19
+ - #{}による式展開を無力化
20
+
21
+
22
+
23
+ することでほぼ安全にevalを実行できている(はず