相关疑难解决方法(0)

如何在PHP中阻止SQL注入?

如果插入用户输入而不修改SQL查询,则应用程序容易受到SQL注入的攻击,如下例所示:

$unsafe_variable = $_POST['user_input']; 

mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')");
Run Code Online (Sandbox Code Playgroud)

这是因为用户可以输入类似的内容value'); DROP TABLE table;--,查询变为:

INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--')
Run Code Online (Sandbox Code Playgroud)

可以采取哪些措施来防止这种情况发生?

php mysql sql security sql-injection

2776
推荐指数
28
解决办法
166万
查看次数

PHP:mysql_real_escape_string是否足以清除用户输入?

mysql_real_escape_string在大多数情况下是否足以清理用户输入?

::编辑::

我主要考虑的是防止SQL注入,但我最终想知道在应用mysql_real_escape_string之后是否可以信任用户数据,或者我是否应该采取额外措施来清理数据,然后再将其传递给应用程序和数据库.

我知道清除HTML字符的位置很重要,但我不认为有必要信任用户输入.

Ť

php security

58
推荐指数
3
解决办法
3万
查看次数

PHP清理数据

我是编码和PHP的新手,因此我想了解清理表单数据的最佳方法是什么,以避免格式错误的页面,代码注入等.我在下面找到的示例脚本是一个很好的例子吗?

代码最初发布于http://codeassembly.com/How-to-sanitize-your-php-input/

/**
 * Sanitize only one variable .
 * Returns the variable sanitized according to the desired type or true/false 
 * for certain data types if the variable does not correspond to the given data type.
 * 
 * NOTE: True/False is returned only for telephone, pin, id_card data types
 *
 * @param mixed The variable itself
 * @param string A string containing the desired variable type
 * @return The sanitized variable or true/false
 */

function sanitizeOne($var, $type)
{ …
Run Code Online (Sandbox Code Playgroud)

php sanitize

13
推荐指数
3
解决办法
4万
查看次数

这两种功能是否过度杀菌?

function sanitizeString($var)
{
    $var = stripslashes($var);
    $var = htmlentities($var);
    $var = strip_tags($var);
    return $var;
}

function sanitizeMySQL($var)
{
    $var = mysql_real_escape_string($var);
    $var = sanitizeString($var);
    return $var;
}
Run Code Online (Sandbox Code Playgroud)

我从一本书中得到了这两个函数,作者说通过使用这两个函数,我可以对XSS(第一个函数)和sql注入(第二个函数)更加安全.这些都是必要的吗?

另外,对于清理,我使用预准备语句来防止sql注入.

我会像这样使用它:

$variable = sanitizeString($_POST['user_input']);
$variable = sanitizeMySQL($_POST['user_input']);
Run Code Online (Sandbox Code Playgroud)

编辑:摆脱第一个函数的strip_tags,因为它没有做任何事情.使用这两个功能是否足以阻止大多数攻击并且对公共站点没问题?

php mysql security xss

7
推荐指数
2
解决办法
870
查看次数

我如何HTML编码Web应用程序中的所有输出?

我想在我的Web应用程序中阻止XSS攻击.我发现HTML编码输出可以真正防止XSS攻击.现在的问题是我如何对我的应用程序中的每个输出进行HTML编码?我有办法实现自动化吗?

我很欣赏JSP,ASP.net和PHP的答案.

php asp.net jsp

6
推荐指数
2
解决办法
6660
查看次数

用于清理输入值PHP的函数

我用这个:

function safeClean($n)
{
    $n = trim($n);

    if(get_magic_quotes_gpc())
    {
        $n = stripslashes($n);
    } 

    $n = mysql_escape_string($n);
    $n = htmlentities($n);

    return $n;
}
Run Code Online (Sandbox Code Playgroud)

防止任何类型的MySQL注入或类似的东西.每当我用它来包裹$ _POST时:

$username = safeClean($_POST['user']);
$password = md5(safeClean($_POST['password']));
$vpassword = md5(safeClean($_POST['verify']));
$email = safeClean($_POST['email']);
Run Code Online (Sandbox Code Playgroud)

它甚至没有工作,但我附加了functions.php,目录是正确的,但根本不起作用,因为它只显示一个空白页...如果我从每个$ _POST中删除safeClean(),它的工作原理.

为什么这根本不起作用?

php mysql post sanitization

3
推荐指数
1
解决办法
3693
查看次数

标签 统计

php ×6

mysql ×3

security ×3

asp.net ×1

jsp ×1

post ×1

sanitization ×1

sanitize ×1

sql ×1

sql-injection ×1

xss ×1