Php 当只有$text是用户输入时,向mail命令注入

Php 当只有$text是用户输入时,向mail命令注入,php,security,Php,Security,以下PHP脚本中是否存在注入的安全风险 <?php $empfaenger_1 = "test@example.com"; $sender = "test@example.com"; $name = $_POST['name']; $telefon = $_POST['phone']; $betreff = "Test"; $text = "Please contact me Name: $name Telefon: $telefon"; mail($empfaenger_1,

以下PHP脚本中是否存在注入的安全风险

<?php
$empfaenger_1 = "test@example.com";
$sender = "test@example.com";

$name = $_POST['name'];
$telefon = $_POST['phone']; 
$betreff = "Test";

$text =
"Please contact me

Name: $name
Telefon: $telefon";

mail($empfaenger_1, $betreff, $text,"from:$sender");

$url = htmlspecialchars($_SERVER['HTTP_REFERER']);
echo "<center><br><br>Thank you<br><br>";
echo "<center><a href='$url'>Back</a>";

如果客户端以html视图模式打开电子邮件,并且用户插入脚本,那么是的,它容易受到攻击,并且扩展到。当然,你应该


更具体的XSS保护信息可以在上找到。

如果以html视图模式打开电子邮件的客户端,并且用户插入了脚本,那么是的,它易受攻击,并且扩展到。当然,你应该


更多具体的XSS保护信息可以在上找到。

有可能是的,可以插入javascript代码,例如,如果有人将此作为自己的名字:

<script type="text/javascript">

window.location = "http://www.google.com/"

</script>

有可能是的,可以插入javascript代码,例如,如果有人将此作为自己的名字:

<script type="text/javascript">

window.location = "http://www.google.com/"

</script>

我认为邮件注入只能在标题字段中进行。邮件注入正文对我来说是不知道的

无论如何,请注意XSS,您应该使用strip_标记()


我认为邮件注入只能在标题字段中进行。邮件注入正文对我来说是不知道的

无论如何,请注意XSS,您应该使用strip_标记()


邮件中注入

在这里,风险似乎很小。这里有几个答案指出了将HTML注入电子邮件的可能性。对于HTML电子邮件,这是可能的,但HTML邮件消息的
内容类型
标题将设置为
text/HTML
,或作为多部分消息的一部分。RFC 1521规定必须显式设置HTML内容类型,如果未指定内容类型,则默认为纯文本:

默认RFC 822消息由该协议以US-ASCII字符集中的纯文本形式键入,可显式指定为“内容类型:text/plain;charset=US ASCII”。如果未指定内容类型,则假定此默认值

在上述代码中,用户提供的文本插入到标题之后;攻击者将没有机会更改内容类型(HTML或multipart,后者允许注入MIME边界)

最终结果只能是一条纯文本消息。如果用户向消息中注入HTML标记,则阅读电子邮件的人将在消息中看到这些HTML标记。电子邮件客户端通常不会偶然地检查明文消息来定位和解析嵌入的HTML和JavaScript

其他地方注射

虽然使用
邮件
可能是安全的,但其余代码中存在潜在的注入漏洞:

$url = htmlspecialchars($_SERVER['HTTP_REFERER']);
echo "<center><a href='$url'>Back</a>";
$url=htmlspecialchars($\u SERVER['HTTP\u REFERER']);
回声“;

默认情况下,使用
ENT|ENT|HTML401
标志,该标志不会将单引号转换为';。link href属性用单引号分隔。因此,如果攻击者可以强制HTTP引用方包含单个引号,则他/她可以调用常规XSS攻击。(例如,如果推荐人被强制成为
http://whatever/a“onclick=”alert()
,单击该链接可以调用任意JavaScript。若要解决此问题,请放置“
$url
”在第二行中使用双引号,或使用
ENT\u quotes
标志调用
htmlspecialchars

邮件中注入

这里的风险似乎很小。这里有几个答案指出了HTML注入电子邮件的可能性。对于HTML电子邮件,这是一种可能性,但HTML邮件消息的
内容类型
标题将设置为
text/HTML
,或作为多部分消息的一部分。RFC 1521规定HTML内容类型必须e显式设置,如果未指定内容类型,则默认为纯文本:

默认RFC 822消息由该协议以US-ASCII字符集中的纯文本形式键入,可显式指定为“内容类型:text/plain;charset=US ASCII”。如果未指定内容类型,则假定此默认值

在上面的代码中,用户提供的文本被插入到标题之后;攻击者将没有机会更改内容类型(要么更改为HTML,要么更改为multipart,后者允许插入MIME边界)

最终结果只能是一条纯文本消息。如果用户向消息中注入HTML标记,则阅读电子邮件的人将在消息中看到这些HTML标记。电子邮件客户端通常不会偶然检查纯文本消息以定位和解析嵌入的HTML和JavaScript

其他地方注射

虽然使用
邮件
可能是安全的,但其余代码中存在潜在的注入漏洞:

$url = htmlspecialchars($_SERVER['HTTP_REFERER']);
echo "<center><a href='$url'>Back</a>";
$url=htmlspecialchars($\u SERVER['HTTP\u REFERER']);
回声“;

默认情况下,使用不将单引号转换为';的
ENT|u COMPAT | ENT|u HTML401
标志。link href属性用单引号分隔。因此,如果攻击者可以强制HTTP引用方包含单引号,他/她可以调用例行XSS攻击。(例如,如果推荐人被强制成为
http://whatever/a“onclick=”alert()
,单击该链接可以调用任意JavaScript。若要解决此问题,请放置“
$url
”在第二行用双引号括起来,或者用
entu quotes
标记调用
htmlspecialchars

好吧,我想我应该用htmlspecialchars来清理它?我会用
strip\u标签来代替htmlspecialchars,这样文本查看器会更有趣。而且htmlspecialchars可能会破坏你的十四行诗。好吧,我应该清理一下我想是用htmlspecialchars吧?我会用
strip_tags
代替htmlspecialchars,这样文本查看器会更有趣。而且htmlspecialchars可能会破坏你的sonderzeichen。