观察后端代码使用 htmlspecialchars 函数将参数中的特殊字符(如 <, >, &, " 等)转换为 HTML 实体。
<?php
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Check Anti-CSRF token
checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );
// Get input
$name = htmlspecialchars( $_GET[ 'name' ] );
// Feedback for end user
$html .= "<pre>Hello {$name}</pre>";
}
// Generate Anti-CSRF token
generateSessionToken();
?>
我们打印一下输入<script>alert(document.cookie)</script>
转义后的字符串
这样浏览器会将其作为普通文本显示,而不是执行。