在这种情况下,如何使用PHP防止javascript(http://my_host_here.com/publications.php/";>;<;脚本>;警报(1)<;/script>;)?
我尝试了下面的代码,但似乎javascript是在http请求发送到服务器之前运行的 谢谢在这种情况下,如何使用PHP防止javascript(http://my_host_here.com/publications.php/";>;<;脚本>;警报(1)<;/script>;)?,php,javascript,sql-injection,Php,Javascript,Sql Injection,我尝试了下面的代码,但似乎javascript是在http请求发送到服务器之前运行的 谢谢 <?php class secure { function secureSuperGlobalGET(&$value, $key) { $_GET[$key] = htmlspecialchars(stripslashes($_GET[$key])); $_GET[$key] = str_ireplace("script", "blocked
<?php
class secure
{
function secureSuperGlobalGET(&$value, $key)
{
$_GET[$key] = htmlspecialchars(stripslashes($_GET[$key]));
$_GET[$key] = str_ireplace("script", "blocked", $_GET[$key]);
$_GET[$key] = mysql_escape_string($_GET[$key]);
return $_GET[$key];
}
function secureSuperGlobalPOST(&$value, $key)
{
$_POST[$key] = htmlspecialchars(stripslashes($_POST[$key]));
$_POST[$key] = str_ireplace("script", "blocked", $_POST[$key]);
$_POST[$key] = mysql_escape_string($_POST[$key]);
return $_POST[$key];
}
function secureGlobals()
{
echo "in here";
array_walk($_GET, array($this, 'secureSuperGlobalGET'));
array_walk($_POST, array($this, 'secureSuperGlobalPOST'));
}
}
?>
mysql\u[real\uu]escape\u string
最后,回答您的问题:在回显用户提交的值时,对其使用htmlspecialchars() 如果Javascript在代码返回服务器之前运行,那么这很可能是某种形式的基于DOM的XSS。Javascript可能正在提取alert(1)的值,并将其直接放入DOM中。您可能需要更改客户端处理该值的方式
OWASP对如何抵御基于DOM的跨站点脚本攻击(如以下攻击)有一个非常好的概述:不确定您在这里要做什么。您只是将这些糟糕的字符串弄得面目全非:)始终只为手头的任务转义。您能说明您在什么情况下试图阻止什么吗?看看您是如何使用的吗在请求发送到服务器之前,如果发生了什么事情,您需要发布HTML/Javascript代码。