Php 如果我使用以下命令,正则表达式是否用于表单验证?
我知道不管怎样加上它都没有坏处,但我很好奇 如果我要使用htmlentities();使用ENT_引号,然后使用mysql_real_escape_string();在将变量输入数据库之前,只需使用html_entity_decode();连同斜杠();要显示信息Php 如果我使用以下命令,正则表达式是否用于表单验证?,php,mysql,regex,validation,code-injection,Php,Mysql,Regex,Validation,Code Injection,我知道不管怎样加上它都没有坏处,但我很好奇 如果我要使用htmlentities();使用ENT_引号,然后使用mysql_real_escape_string();在将变量输入数据库之前,只需使用html_entity_decode();连同斜杠();要显示信息 这仍然是安全的吗?在将数据存储到数据库之前,不需要使用htmlentities。事实上,如果你不这样做,事情会变得更容易。在HTML输出中回显字符串时,仅对字符串使用htmlentities(无论是从数据库还是从其他源获取字符串) 从
这仍然是安全的吗?在将数据存储到数据库之前,不需要使用htmlentities。事实上,如果你不这样做,事情会变得更容易。在HTML输出中回显字符串时,仅对字符串使用htmlentities(无论是从数据库还是从其他源获取字符串) 从数据库获取数据后,不需要对数据应用stripslashes。数据库没有存储额外的转义字符——除非您错误地应用了双重转义 以下是正确的顺序:
$input = $_GET["input"];
$sql = "INSERT INTO MyTable (column1) VALUES ($quoted_input)";
$success = mysql_query($sql);
$sql = "SELECT column1 FROM MyTable";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$data = $row["column1"];
$sql = "INSERT INTO MyTable (column1) VALUES ($quoted_input)";
$success = mysql_query($sql);
$sql = "SELECT column1 FROM MyTable";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$data = $row["column1"];
echo htmlentities($data);
在将数据存储到数据库中之前,不需要使用htmlentities。事实上,如果你不这样做,事情会变得更容易。在HTML输出中回显字符串时,仅对字符串使用htmlentities(无论是从数据库还是从其他源获取字符串) 从数据库获取数据后,不需要对数据应用stripslashes。数据库没有存储额外的转义字符——除非您错误地应用了双重转义 以下是正确的顺序:
$input = $_GET["input"];
$sql = "INSERT INTO MyTable (column1) VALUES ($quoted_input)";
$success = mysql_query($sql);
$sql = "SELECT column1 FROM MyTable";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$data = $row["column1"];
$sql = "INSERT INTO MyTable (column1) VALUES ($quoted_input)";
$success = mysql_query($sql);
$sql = "SELECT column1 FROM MyTable";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$data = $row["column1"];
echo htmlentities($data);
您是否在询问是否仍然需要regex作为所有这些函数旁边的表单验证
如果这就是你要问的,那么在我看来,是的,你永远都不够安全。我刚刚编写了一个验证类,其中包含了一些函数,这些函数可以在需要特定输入时使用regex清理代码和其他函数。您是否在询问是否仍然需要在所有这些函数旁边使用regex作为表单验证
如果这就是你要问的,那么在我看来,是的,你永远都不够安全。我刚刚编写了一个验证类,其中的函数可以在需要特定输入时使用regex清理代码和其他函数。如果您知道这些函数的用途,您可以自己回答这个问题:
- 用于替换HTML特殊字符
、&
和
和。这用于对数据进行编码,以便在任何HTML上下文中安全地输出(尤其是使用ENT_引号,以便它甚至可以在单引号属性值中使用)。例如:“
<textarea><?php echo htmlentities('</textarea>'); ?></textarea>
$query = 'SELECT "'.mysql_real_escape_string("\n\r\t\v\f\\\"").'"';
- 是与
相反的函数,并替换HTML字符引用(数字和实体字符引用)htmlentities
- 删除转义字符
\
如果您只是想保护自己不受SQL注入的影响,请对mysql查询中使用的数据使用
mysql\u real\u escape\u string
。您也可以使用准备好的语句或参数化查询生成器(参见、、等。)。如果您知道这些函数的用途,您可以自己回答这个问题:
- 用于替换HTML特殊字符
、&
和
和。这用于对数据进行编码,以便在任何HTML上下文中安全地输出(尤其是使用ENT_引号,以便它甚至可以在单引号的属性值中使用)。例如:“
<textarea><?php echo htmlentities('</textarea>'); ?></textarea>
$query = 'SELECT "'.mysql_real_escape_string("\n\r\t\v\f\\\"").'"';
- 是与
相反的函数,并替换HTML字符引用(数字和实体字符引用)htmlentities
- 删除转义字符
\
如果您只是想防止SQL注入,请对mysql查询中使用的数据使用
mysql\u real\u escape\u string
。您还可以使用准备好的语句或参数化查询生成器(请参见、、等)。来自试图从表单输入恶意攻击数据库的人…来自试图从表单输入恶意攻击数据库的人…因此,采取仅使用mysql\u real\u escape\u字符串的方法,然后进入数据库,这样安全吗?那么XSS呢?我以为htmlentities会有助于抵御这种攻击,而不是xss攻击。我有一个带有表单的演示,用户添加了html代码,其中包含指向xss javascript文件的链接,该文件将运行恶意代码。我使用了htmlentities(),因此html将被打印,而不是由浏览器处理。当然,如果您允许html输入正则表达式,那么htmlentities()htmlentities
与将数据插入数据库无关。它用于显示目的,用于通过应用程序将数据从数据库移动到屏幕上。所以基本上,htmlentities和mysql_real_escape_string将停止注入和XSS JS文件?但是PHP正则表达式只是额外的安全性,可以真正将人们限制在您希望他们输入的范围内?JS正则表达式仅仅是为了在客户端更方便地使用/导航?(因此,在他们完全理解之前,不会将他们从一页引导到另一页)是的,这是一个很好的理解。我倾向于使用正则表达式来验证输入的格式是否正确,而不是出于安全考虑。因此,采用只使用mysql\u real\u escape\u字符串的方法,然后进入数据库,这是否安全?那么XSS呢?我以为htmlentities会有助于抵御这种攻击,而不是xss攻击。我有一个带有表单的演示,用户添加了html代码,其中包含指向xss javascript文件的链接,该文件将运行恶意代码。我过去常打领带