- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我已经为我的网络应用编写了一个基本的“安全检查程序”。我需要看一眼用户提交的代码是否包含恶意内容。
这是我现在正在运行的代码的屏幕截图:http://cl.ly/677a6dc40034f096697f
这里是 PHP 代码我正在使用这三位代码:
<!-- The View -->
<h2>Security analysis</h2>
<?php echo securitycheck($html, $css, $js); ?>
-
// The controller
function securitycheck($html, $css, $js)
{
// The code is the html, css, and js, appended together. We're scanning it all.
$code = $html." ".$css." ".$js;
// $insecure is our array of naughty things to search for.
$insecure = array(
/* HTML Elements */
'applet',
'basefont',
'base',
'behavior',
'bgsound',
'blink',
'embed',
'expression',
'frameset',
'frame',
'ilayer',
'iframe',
'isindex',
'javascript',
'layer',
'link',
'meta',
'object',
'plaintext',
'style',
'script',
'xml',
'xss',
/* Javascript Elements */
'alert',
'cmd',
'passthru',
'eval',
'exec',
'expression',
'system',
'fopen',
'fromcharcode',
'fsockopen',
'file',
'file_get_contents',
'readfile',
'unlink',
/* Misc Elements */
'vbscript:',
'<?',
'<?php',
'?>'
);
$found = "";
$output = "<p><strong>Potentially insecure items found:</strong> ";
foreach($insecure as $item)
{
if (($pos = strpos($code, $item)) !== FALSE)
{
$found .= "$item, ";
}
}
if ($found == "")
{
$output .= "None.<br/>";
}
else
{
$output .= "<span class=\"alert\">".substr($found, 0, -2)."</span>"."</p><br/>"; // cuts trailing comma and space from $found
}
return $output;
}
最后,这是返回输出的屏幕截图(HTML 格式):http://cl.ly/f246dc419fb499dd6bd7
看到截图了吗?有几处错误。尾随空格和逗号没有被切断(我使用 substr()
来做,而且它报告了两个 alert
,正如你从第一个中看到的那样屏幕截图,只有一个通过此运行。
我做错了什么?
谢谢!
jack
编辑正如 Fosco 友善地指出的那样,alert
在我的数组中列出了两次(doh!)。我已经解决了这个问题,但是留下尾随逗号的问题仍然存在。我知道这是一个较小的问题,但我发誓它仍然不应该存在......
最佳答案
一眼看去,您的代码应该会提供您想要的输出。我不确定出了什么问题。
与其将 $found
构建为字符串,我建议将其构建为数组,然后使用 implode()
获取字符串:
$found = "";
替换为 $found = array();
$found .= "$item, ";
为 $found[] = $item;
if ($found == "")
{
$output .= "None.<br/>";
}
else
{
$output .= "<span class=\"alert\">".substr($found, 0, -2)."</span>"."</p><br/>"; // cuts trailing comma and space from $found
}
用这个:
if (!count($found))
{
$output .= "None.<br/>";
}
else
{
$output .= "<span class=\"alert\">".implode(', ',$found)."</span>"."</p><br/>"; // cuts trailing comma and space from $found
}
关于PHP strpos() 返回奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3477228/
Warning: strpos() [function.strpos]: Empty delimiter 是什么意思? 我有这个: if(strpos(''', $text) ===
我知道,有人问过这个问题,但不幸的是,没有解决这个问题的答案。 这出现在我的日志文件中: PHP 消息:PHP 警告:strpos():第 479 行中的字符串中不包含偏移量 不幸的是,我无法理解导致
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章strpos() 函数判断字符串中是否包含某字符串的方法由作者收集整理,
问题,下面是怎么执行echo的: $str = "Hello World"; if (strpos($str, 'He') !== false) { echo 'GOOD'; } 但这不是:
我使用的是 PHP 版本 5.1.6 我有一个字符串( session 文件)并且需要从中提取一个值,所以我在字符串中搜索针但它返回 false,我将代码缩减为: $string = ';SERVER
我正在使用这段代码来查找字符串中是否存在子字符串,但是当它遇到特殊字符时,即使该字符明显存在,它也会失败。 //Code out of context if (strpos($pieces[$i],
所以目前我有以下两个数组: Array ( [0] => image/jpeg [1] => image/png [2] => image/psd ) Array ( [0] => png [1] =
我需要检查字符串是否包含特定单词,但请记住,中间可能有空格(任何类型 - 空格、制表符等)。 $array1 = "name @mail lastname"; $array2 = "name @ ma
因此,我的网站收到了大量垃圾邮件。 为了过滤掉其中的一些内容,我想测试帖子的正文以确保它不包含某些词。如果他们这样做,请立即(临时)禁止用户。 包括我的代码。我添加了一条回显线来显示返回的位置,并测试
我正在尝试使用 strpos 在另一个字符串中查找字符串,但由于某种原因它不适用于某个字符串,即使它适用于另一个字符串。我究竟做错了什么? 结果: true2 预期结果: true1true2 最佳
我在 php 中有一个函数,我想对一个字符串执行简单的搜索,使用 kw 作为搜索短语,如果找到则返回 true。 这是我现在拥有的: for($i=0; $i
我一直在努力反对谷歌试图解决这个问题,但我所能找到的只是那些不明白 strpos 返回找到的字符串的位置的人,所以 0 是一个有效值。这不是我的问题......简而言之: $services=shel
我有一个巨大的 html 代码要扫描。直到现在我一直在使用 preg_match_all从中提取所需的部分。从一开始的问题就是它非常耗费 CPU 时间。我们最终决定使用其他方法进行提取。我在一些文章中
我正在尝试用 PHP 进行一些验证,其中之一是检查输入的字符串中是否有特定的单词。问题是,当我将指定的单词放在第一位时,我的代码似乎无法正常工作。 代码如下: $word = "aa bb cc dd
更新:我在查看strrpos 的文档时认为它是strpos 的文档。很抱歉犯了这个愚蠢的错误。 根据 the docs ,它表示当您提供一个负值作为偏移量参数时,该函数将从字符串末尾开始那么多字符,向
我在 stackoverflow 上找到了这个例子: if (strpos($a,'are') !== false) { echo 'true'; } 但是我如何让它搜索两个词。我需要这样的东
我需要找出一个字符串是否存在于数组值中,但不一定是实际的数组值。 $array = array( 0 => 'blue', 1 => 'red', 2 =>
仅当 $_GET['page'] 参数包含文本“mytext-”时,我才需要执行一些脚本 查询字符串是:admin.php?page=mytext-option 这将返回 0: $myPage = $
我已经为我的网络应用编写了一个基本的“安全检查程序”。我需要看一眼用户提交的代码是否包含恶意内容。 这是我现在正在运行的代码的屏幕截图:http://cl.ly/677a6dc40034f096697
我正在使用 strpos() 函数在数组键成员中查找字符串。 foreach($_POST as $k => $v){ // for all types of questions of
我是一名优秀的程序员,十分优秀!