PHP环境安全性能检查,php环境安全性能功能:1,检测PHP


PHP在Linux环境下安全配置是一个复杂的过程,其中涉及到很多的细节设置,在这里发出来一个脚本,通过这个脚本来检测你的PHP环境是否存在安全隐患,从而针对这些对你的PHP环境进行加固。


功能:

1,检测PHP环境安全配置

(2)应禁用的功能。

3,危险的设置,可能会导致本地或远程文件包含。

4,错误处理。

5。在编译时定义的常量。

安装PHP环境后,将此三个文件的脚本放在网站的Web目录下(audit.php php.xml的style.css



1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

<?PHP

/ **

* PHP保安核数师

* /

审计类{

静态专用$规则;

静态专用$常数;

静态私人phpVer;

静态公共报告;

/ **

*转换设置,如1M 1G 1K字节同等学历值

*

* @参数字符串$ N

* @ 返回字符串

* /

静态专用的功能convertToBytes($ N){

/ / 如果n为-1,则没有任何限制

如果($ N == -1)

返回PHP_INT_MAX;

开关(SUBSTR(N,-1)){

“B” :返回SUBSTR($ N,0,-1);

“K” :返回SUBSTR($ N,0,-1)* 1024;

“M” :返回SUBSTR($ N,0,-1)* 1024 * 1024;

“G” :返回SUBSTR($ N,0,-1)* 1024 * 1024 * 1024;

}

返回$ N;

}

静态私人的功能MakeReport($ 类型,标题){

ksort(个体经营:: $报告[ 类型]);

HTML = '<H1>' <!----> <!----> <----> <----> <!----> T <! - - > <!----> T <----> L <!----> <!----> <!----> <!----> <!----> </ H1>涨跌<tr class="h"> <TH>设置</ TH> <TH>电流</次> <TH> Recomended </ TH> <TH>说明</ th> </ TR>' ;

的foreach(自:: $报告[ 类型]为$关键=“$值)

{

如果($值[ 'P' ] == 1)$类= “r”的;

其他类= “V” ;

HTML美元。= '<TR> <td class="e">' 。ヶ辆(键)。“</ TD>' 。

<TD类=“' 类。“>” 。ヶ辆($值[ 'C' ])'</ TD>' 。

<TD类=“' 类。“>” 。ヶ辆($值[ 'R' ])'</ TD>' 。

<TD类=“' 类。“>” 。ヶ辆($值[ 'D' ])'</ TD> </ TR>' ;

}

HTML美元。= '</ TABLE>' ;

返回HTML美元;

}

静态公共功能HTMLReport的()

{

$类= “” ;

$ HTML = '<!DOCTYPE HTML PUBLIC“ - / / W3C / / DTD XHTML 1.0过渡/ / EN”“DTD/xhtml1-transitional.dtd”>“ 。

<HTML> <<!---->小时<!----> <!----> <----> D <!---- >> <!--- - >“ <!----> <!----> <!---->

<!---->

<!----> <!----> <!----> <!----> <!----> <!----> <!----> < ----> <!----> <----> << ----> L <!----> I <----> N <! - - > K <----> <!----> <!---->

<!---->

<!----> <!----> <!----> <!----> <!----> <!----> <!----> < ----> <!----> </头> <BODY>' ;

HTML美元=自:: MakeReport(“INI” ,“PHP INI” );

HTML美元=自:: MakeReport( “ 禁用” ,“PHP禁用的功能” );

HTML美元=自:: MakeReport( “ 常量” ,“PHP CONST” );

HTML美元。= '</ HTML>' ;

回声(HTML美元的“n” );

}

/ **

*添加一个项目报告阵列。

*

* @参数字符串类型- 类型(INI或const)

* @参数字符串美元的关键 - 的变量名称

* @参数字符串$当前值 - 当前的ini或const值

* @参数字符串$ recomended - recomended值

* @参数字符串$ DESC - 问题的描述

* @参数布尔问题- 真实的,如果不投诉,假,如果符合

* /

静态专用功能报告(类型,键,当前值$,$ recomended,$递减美元的问题)

{

如果(isset(的自我:: $报告[ 类型] [$]))

(报告(自:: $ [$ 类型] [$] [ 'R' ] <$ recomended)

&&(个体经营:: $报告[ 类型] [$键[ 'P' ] == 1))

返回;

自:: $报告[ 类型] [关键] =阵列(

“C” => $当前值,

“R” => $ recomended

“D” => $递减,

“P” => $问题

);

}

/ **

*从XML 加载规则

*

* @参数字符串$ 文件

* /

静态公共功能LoadRules的($ 文件=的“php.xml” )

{

(义('PHP_VERSION_ID' ))

{

$版本=爆炸(“。” ,PHP_VERSION);

自:: $ phpVer =($版[0] * 10000 + $版本[1] * 100 + $版本[2]);

其他

自我:: $ phpVer = PHP_VERSION_ID,

自:: $常数= get_defined_constants();

自我:: $规则= simplexml_load_file($ 文件);

}

/ **

*处理XML规则集对const和INI值在PHP

*

* /

静态公共的功能ProcessXML(){

的foreach(个体经营:: $规则为$ null => $项){

ruleID美元= $入门>属性() - > ID ;

/ / 检查的PHP版本,该规则适用于

$版本=(字符串)$入门版本;

(版本!= “” ){

OP =(字符串)$入门>版本- >属性() - > 运算;

开关(运){

的情况下“才” :

如果($版本<自我:: $ phpVer)

继续2;

打破;

}

}

/ / 评价规则,因为我们相信它applys运行的PHP版本

开关((串)$入门型)

{

/ / 看看常量的值

案“常量” :

美元的关键=(字符串)$入门>键, / / 例如LIBXML_NOENT

$ CVALUE =自我:: $常数[关键] / / 当前值

右值=(字符串)$入门>价值; / / recomended值

DESC = $(字符串)$入门>描述 / /

开关((字符串)$入门>值- >属性() - > 运算)

{

的情况下:

自::报告(“常量” ,$,$ CVALUE $ $ RVALUE,递减($ CVALUE == $ RVALUE)0:1);

打破;

}

打破;

/ / 检查列表应该被限制的功能,

情况“disable_functions选项” :

$禁用= ini_get(“disable_functions选项” );

$名单=爆炸(“,” 禁用);

$的XMLList =(数组)($入门>清单);

$的XMLList = $的XMLList [ '功能' ];

foreach($美元的XMLList为$ null => $ 函数){

$ = array_search($ 函数列表);

自::报告(“禁用” ,$ 函数,(($ == 0)? “ 已启用” :“禁用” ), “ 禁用” ,“” ,(($ == 0)?1:0) );

}

打破;

/ / 看看INI文件内定义的值

情况“INI” :

美元的关键=(字符串)$入门>键,/ / 如的display_errors

$ CVALUE =修剪(自:: convertToBytes(ini_get($)))/ / 当前值

$右值=(字符串)$入门>价值; / / Recomended值

DESC = $(字符串)$入门>描述/ /

如果(is_numeric(右值)&& $ CVALUE == “ )$ CVALUE = “0” ;

/ / 优惠,应该比一个值到另一个

如果((串)入门>值- >属性() - > 类型== “钥匙” )

$ RVALUE =的自我:: convertToBytes(ini_get((字符串)$入门>值));

开关((字符串)$入门>值- >属性() - > 运算)

{

/ / 等于

的情况下:

的自我::报告(“INI” ,美元的关键,$ CVALUE,$ RVALUE,$递减($ CVALUE == $ RVALUE)0:1);

打破;

/ / 小于或等于

情况下,“LT” :

的自我::报告(“INI” ,$,$ CVALUE,“<$ RVALUE” ,$递减,($ CVALUE <= $ RVALUE),0:1);

打破;

/ / 大于或等于

情况下,“GT” :

的自我::报告(“INI” ,$,$ CVALUE,“> $ RVALUE” ,$递减,($ CVALUE> = $ RVALUE),0:1);

打破;

/ / 不等于

情况下“定义” :

$ neValue =(字符串)$入门>值 - >属性() - >网;

notBlank美元=(字符串)$入门>值 - >属性() - > notblank;

(notBlank == “真” ){

的自我::报告(“INI” ,美元的关键,$ CVALUE,$ RVALUE,$递减,($ CVALUE!= “ )0:1);

打破;

}

的自我::报告(“INI” ,关键,$ CVALUE,$ RVALUE,$递减,($ CVALUE!= $ neValue)0:1);

打破;

}

打破;

}

}

}

}

审计:: LoadRules();

审计:: ProcessXML();

审计:: HTMLReport();

php.xml代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

<?XML版本= “1.0” 编码= “UTF-8” ?

<rules>

<条目ID = “1” >

< 类型> INI < /类型>

<KEY>的upload_max_filesize < /键>

<值OP = “LT” > 4194304 < /值>

<DESCRIPTION>设置上传的最大大小。减少这种DOS攻击,以减低风险。< /说明>

< /入门>

<条目ID = “29” >

< 类型> INI < /类型>

<KEY>的upload_max_filesize < /键>

<值OP = “LT” 型= “钥匙” > < 的memory_limit >

<DESCRIPTION>上传的最大尺寸应该能够适合于avaliable的内存限制。< /说明>

< /入门>

<条目ID = “30” >

< 类型> INI < /类型>

<KEY>的post_max_size < /键>

<值OP = “LT” 型= “钥匙” > < 的memory_limit >

<DESCRIPTION>发送到服务器的数据的最大尺寸后应avaliable内存限制内。< /说明>

< /入门>

<条目ID = “32” >

< 类型> INI < /类型>

<KEY> always_populate_raw_post_data < /键>

<值OP = “EQ” > 0 < /值>

<description>元素,这并不需要被使用。的首选方法是php:/ /输入< /说明>

< /入门>

<条目ID = “33” >

< 类型> INI < /类型>

<KEY> magic_quotes_gpc的< /键>

<值OP = “EQ” > 0 < /值>

<DESCRIPTION>设置magic_quotes的状态为GPC(GET PUT COOKIE)数据。依托这个功能是非常气馁。< /说明>

<版本OP = “前” > 50300 < /版>

的<url> HTTP:/ / WWW 。php.net /手动/ EN /信息的configuration.php的#ini.magic引号-GPC </>

< /入门>

<条目ID = “34” >

< 类型> INI < /类型>

<KEY> magic_quotes_runtime的< /键>

<值OP = “EQ” > 0 < /值>

<DESCRIPTION>设置magic_quotes的状态,从外部数据源的数据。依托这个功能是非常气馁。< /说明>

<版本OP = “前” > 50300 < /版>

的<url> HTTP:/ / WWW ,php.net /手动/ EN /信息。的configuration.php </ URL>

< /入门>

<条目ID = “35” >

< 类型> INI < /类型>

<KEY>安全模式< /键>

<值OP = “EQ” > 0 < /值>

<DESCRIPTION>此功能已被弃用的PHP 5.3.0。依托这个功能是非常气馁。< /说明>

<版本OP = “前” > 50300 < /版>

< /入门>

<条目ID = “36” >

< 类型> INI < /类型>

<KEY>的memory_limit < /键>

<值OP = “LT” > 16777216 < /值>

<DESCRIPTION> 的最大内存限制应该是16M或更小。< /说明>

< /入门>

<条目ID = “5” >

< 类型> INI < /类型>

<KEY>的upload_max_filesize < /键>

<值OP = “LT” 型= “钥匙” > < 的post_max_size >

<description>元素的最大上载文件的大小应大于或等于最大大小后< /描述>

< /入门>

<条目ID = “2” >

< 类型> INI < /类型>

<KEY> max_file_uploads < /键>

<值OP = “LT” > 10 < /值>

<DESCRIPTION>最大mumber文件可以上传1走。< /说明>

< /入门>

<条目ID = “3” >

< 类型> INI < /类型>

<KEY>记录file_uploads < /键>

<值OP = “EQ” > 0 < /值>

<DESCRIPTION>这可能是不切实际的,但如果没有必要的文件上传应该被禁用。< /说明>

< /入门>

<条目ID = “4” >

< 类型> INI < /类型>

<KEY>的post_max_size < /键>

<值OP = “LT” > 4194304 < /值>

<DESCRIPTION>后的最大大小应合理可能小的DOS攻击,以减低风险。< /说明>

< /入门>

<条目ID = “6” >

< 类型> INI < /类型>

<KEY> register_long_arrays来< /键>

<值OP = “EQ” > 0 < /值>

<DESCRIPTION>填充HTTP_ * _VARS 应该不再被使用。< /说明>

<版本OP = “前” > 50300 < /版>

< /入门>

<条目ID = “7” >

< 类型> INI < /类型>

<KEY>的register_globals的< /关键>

<值OP = “EQ” > 0 < /值>

<DESCRIPTION>高度危险的特性,使变量定义。这应该是始终关闭。< /描述>

<版本OP = “前” > 50300 < /版>

< /入门>

<条目ID = “8” >

< 类型> INI < /类型>

<KEY> session.hash_function < /键>

<值OP = “EQ” > 1 < /值>

应更换<DESCRIPTION> MD5与SHA-160,因为它是一个更加复杂和安全散列算法。< /说明>

<版本OP = “后” > 50000 < /版>

< /入门>

<条目ID = “9” >

< 类型> INI < /类型>

<KEY> session.hash_bits_per_character < /键>

<值OP = “>” > < /值>

<DESCRIPTION>每个会话密钥字符编码的比特数。< /说明>

<版本OP = “后” > 50000 < /版>

< /入门>

<条目ID = “10” >

< 类型> INI < /类型>

<KEY> session.entropy_file < /键>

<值OP = “NE” 净= “” > / dev /随机的< /值>

<DESCRIPTION>提供一个随机种子生成会话。< /说明>

< /入门>

<条目ID = “11” >

< 类型> INI < /类型>

<KEY> session.entropy_length < /键>

<值OP = “>” > 32 < /值>

<DESCRIPTION>的字节数,以读为收集熵。< /说明>

< /入门>

<条目ID = “12” >

< 类型> INI < /类型>

<KEY> session.name < /键>

<值OP = “NE” 净“PHPSESSID” >自定义字符串< /值>

<DESCRIPTION> PHP的会话名称。recomended这可以从默认的改变。< /说明>

< /入门>

<条目ID = “14” >

< 类型> INI < /类型>

<KEY> session.save_path的< /键>

<价值OP = “NE” 净= “/ tmp”的notblank = “真” > /自定义/位置< /值>

<DESCRIPTION> 的保存路径,默认的/ tmp目录。< /说明>

< /入门>

<条目ID = “15” >

< 类型> INI < /类型>

<KEY> session.use_trans_sid < /键>

<valueop="eq">0</value>

不应该被允许<DESCRIPTION>会话GET paramaters的。< /说明>

< /入门>

<条目ID = “18” >

< 类型> INI < /类型>

<KEY>的display_errors < /键>

<值OP = “EQ” > 0 < /值>

应抑制<DESCRIPTION>错误消息< /说明>

< /入门>

<条目ID = “19” >

< 类型> INI < /类型>

<KEY> allow_url_fopen选项< /键>

<值OP = “EQ” > 0 < /值>

不,远程文件<DESCRIPTION>应该是accessable用fopen。< /说明>

< /入门>

<条目ID = “20” >

< 类型> INI < /类型>

<KEY> allow_url_include < /键>

<值OP = “EQ” > 0 < /值>

您<DESCRIPTION>不应该是能包括远程脚本使用包括< /说明>

< /入门>

<条目ID = “31” >

< 类型> INI < /类型>

<KEY> session.cookie_httponly < /键>

<值OP = “EQ” > 1 < /值>

<DESCRIPTION>饼干了HttpOnly必须默认< / 说明>

<版本OP = “后” > 50200 < /版>

< /入门>

<条目ID = “20” >

< 类型> INI < /类型>

<KEY>的open_basedir < /键>

<值OP = “NE” 净= “/” notblank = “真” > / / webroot的< /值>

<DESCRIPTION> PHP的webroot可以打开的文件限制。< /说明>

< /入门>

<条目ID = “32” >

< 类型> INI < /类型>

<KEY> upload_tmp_dir < /键>

<价值OP = “NE” 净= “/ tmp”的notblank = “真” > /自定义/位置< /值>

<DESCRIPTION>改变位置的文件上传到initally < /描述>

< /入门>

<条目ID = “21” >

< 类型> INI < /类型>

<KEY>的max_execution_time < /键>

<值OP = “LT” > 20 < /值>

<描述>执行时间应限制在20秒或更少。< /描述>

< /入门>

<条目ID = “22” >

< 类型> INI < /类型>

<KEY> max_input_nesting_level < /键>

<值OP = “LT” > 32 < /值>

<说明>最大级嵌套对象32 sufficent的。< /说明>

< /入门>

<条目ID = “23” >

< 类型> INI < /类型>

<KEY> enable_dl < /键>

<值OP = “EQ” > 0 < /值>

<DESCRIPTION>禁用加载的动态扩展。< /说明>

< /入门>

<条目ID = “24” >

< 类型> INI < /类型>

<KEY> display_startup_errors设置< /键>

<值OP = “EQ” > 0 < /值>

<DESCRIPTION>启动错误应该被抑制。< /说明>

< /入门>

<条目ID = “25” >

< 类型> INI < /类型>

<KEY>的log_errors选项< /键>

<值OP = “EQ” > 1 < /值>

<DESCRIPTION>由PHP生成的所有错误应该被记录到一个文件中。< /说明>

< /入门>

<条目ID = “26” >

< 类型> INI < /类型>

<KEY> log_errors_max_len < /键>

<值OP = “>” > 2048 < /值>

<DESCRIPTION>至少为2048个字符的错误消息应存储在错误日志中。< /说明>

< /入门>

<条目ID = “27” >

< 类型> INI < /类型>

<KEY> error_log中< /键>

<值OP = “NE” 净= “” > /自定义/位置< /价值>

<DESCRIPTION>应设置PHP错误日志的位置。< /说明>

< /入门>

<条目ID = “28” >

< 型常量< /类型>

<KEY> LIBXML_NOENT < /键>

<值OP = “EQ” > 0 < /值>

<DESCRIPTION>外部实体应禁用XML解析< /说明>

< /入门>

<条目ID = “37” >

< 类型> INI < /类型>

<KEY>的把session.use_only_cookies < /键>

<值OP = “EQ” > 1 < /值>

应该只通过<DESCRIPTION> Session变量饼干。< /说明>

< /入门>

<条目ID = “29” >

< 型常量< /类型>

<KEY> LIBXML_NONET < /键>

<值OP = “EQ” > 0 < /值>

<DESCRIPTION>网络访问XML解析器应该被禁用。< /说明>

< /入门>

<条目ID = “38” >

< 类型> disable_functions选项< /类型>

<LIST>

< 功能> fsocket_open < /函数>

< 功能> < 包>

< 功能> escapeshellarg < /函数>

< 函数>

< 功能> 执行< /函数>

< 功能> < 中继>

< 功能> proc_close < /函数>

< 功能> php_uname < /函数>

< 功能> getmyuid < /函数>

< 功能> getmypid的< /功能>

< 功能> < 中继>

< 功能> < 泄漏

< 功能>

< 功能> < diskfreespace >

< 功能> TMPFILE < /函数>

< 功能>链接< /函数>

< 功能> < ignore_user_abort >

< 功能> < set_time_limit >

< 功能> < 限制>

< 功能> 执行< /函数>

< 功能> highlight_file < /函数>

< 功能> show_source < /函数>

< 功能> fpaththru < /函数>

< 功能> < 虚拟>

< 功能> posix_ctermid < /函数>

< 功能> posix_getcwd的< /功能>

< 功能> posix_getegid < /函数>

< 功能> posix_geteuid < /函数>

< 功能> posix_getgid < /函数>

< 功能> posix_getgrgid < /函数>

< 功能> posix_getgrnam < /函数>

< 功能> posix_getgroups < /函数>

< 功能> posix_getlogin < /函数>

< 功能> posix_getpgid < /函数>

< 功能> posix_getpgrp < /函数>

< 功能> posix_getpid的< /功能>

< 功能> POSIX < /函数>

< 功能> posix_getpwnam < /函数>

< 功能> posix_getpwuid < /函数>

< 功能> posix_getrlimit < /函数>

< 功能> posix_getsid < /函数>

< 功能> posix_getuid < /函数>

< 功能> posix_isatty < /函数>

< 功能> posix_kill < /函数>

< 功能> posix_mkfifo < /函数>

< 功能> posix_setegid < /函数>

< 功能> posix_seteuid < /函数>

< 功能> posix_setgid < /函数>

< 功能> posix_setpgid < /函数>

< 功能> posix_setsid的< /功能>

< 功能> posix_setuid < /函数>

< 功能> posix_times < /函数>

< 功能> posix_ttyname < /函数>

< 功能> posix_uname < /函数>

< 功能> < proc_open >

< 功能> proc_close < /函数>

< 功能> proc_get_status < /函数>

< 功能> proc_nice < /函数>

< 功能> proc_terminate < /函数>

< 功能> < 的phpinfo

< 功能> < proc_open >

< 功能> < 函数shell_exec >

< 功能>系统< /函数>

< 功能> < set_time_limit >

< 功能> ini_alter < /函数>

< 功能> DL < /函数>

< 功能> POPEN < /函数>

< 功能> parse_ini_file < /函数>

< /列表>

< /入门>

< /规则>

style.css的代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

@ CHARSET “UTF-8” ;

体{背景颜色:#FFFFFF;颜色:#000000;}

身体,TD,TH,H1,H2 {字体家庭:无衬线;}

预{保证金:0PX;字体家庭:等宽;}

表{边境崩溃:崩溃;}

TD,TH {边界:1px的固体#000000;字体大小:75%;垂直对齐:基线;填充左:加入5px;右:加入5px;}

H1 {字体大小:150%;}

H2 {字体大小:125%;}

P {文本对齐:左;}

E {背景颜色:#CCCCFF字体重量:大胆;颜色:#000000;}

H {背景颜色:#9999CC;字体重量:大胆;颜色:#000000;}

v {背景颜色:#CCCCCC;颜色:#000000;填充左:加入5px;}

R {背景颜色:#c50000;颜色:#000000;填充左:加入5px;}

三个文件已经打包:PHP安全check.zip

相关内容

    暂无相关文章