是否足以避免xss?

时间:2016-04-14 08:02:37

标签: javascript xss

当用户放 <script>alert('Hello');</script> 在我的网站上,即评论部分,其翻译:&lt; script&gt; alert('Hello');&lt; / script&gt; 是否足以避免我网站上的xss攻击?

2 个答案:

答案 0 :(得分:2)

如果您将每个<转换为&lt;,将每个>转换为&gt;,则会阻止用户输入任何html标记。这就足够了。

答案 1 :(得分:0)

请查看这些示例,以提高网站的安全性:

1. 反映XSS的最佳可能安全性

<?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 
echo "<pre>Hello ${name}</pre>"; 
} 

// Generate Anti-CSRF token 
generateSessionToken(); 

?> 

2. 存储XSS的最佳安全性

<?php 

if( isset( $_POST[ 'btnSign' ] ) ) { 
// Check Anti-CSRF token 
checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' ); 

// Get input 
$message = trim( $_POST[ 'mtxMessage' ] ); 
$name    = trim( $_POST[ 'txtName' ] ); 

// Sanitize message input 
$message = stripslashes( $message ); 
$message = mysql_real_escape_string( $message ); 
$message = htmlspecialchars( $message ); 

// Sanitize name input 
$name = stripslashes( $name ); 
$name = mysql_real_escape_string( $name ); 
$name = htmlspecialchars( $name ); 

// Update database 
$data = $db->prepare( 'INSERT INTO guestbook ( comment, name ) VALUES ( :message, :name );' ); 
$data->bindParam( ':message', $message, PDO::PARAM_STR ); 
$data->bindParam( ':name', $name, PDO::PARAM_STR ); 
$data->execute(); 
} 

// Generate Anti-CSRF token 
generateSessionToken(); 

?>