有什么比较简单的方法 能防止html标签注入和数据库注入

有什么比较简单的方法 能防止html标签注入和数据库注入,第1张

一,HTML防注入。

一般的html注入都是在字符串中加入了html标签,用下JAVA代码可以去掉这部分代码。

代码如下,自己封装成方法即可。

String msge = "asdasdasdasd <div id=\"f\">asdfsdf";

Systemoutprintln(msge);

msge = msgereplace("&", "&");

msge = msgereplace("<", "<");

msge = msgereplace(" ", " ");

msge = msgereplace(">", ">");

msge = msgereplace("\"", """);

msge = msgereplace("'", "&qpos;");

Systemoutprintln(msge);

二、防SQL注入

最简单最容易的是限制用户输入。

简单点的就是不允许用户输入单引号 和 --,因为单引号号--在SQL中都是影响执行的。

但SQL注入是多方面的,防止的方法也有很多种。

1、地址栏禁止特殊字符防SQL注入

把特殊字符(如and、or、'、")都禁止提交就可以防止注入了。

2、php过滤html字符串,防止SQL注入

批量过滤post,get敏感数据

$_GET = stripslashes_array($_GET);

$_POST = stripslashes_array($_POST);

数据过滤函数

function stripslashes_array(&$array) {

while(list($key,$var) = each($array)) {

if ($key != 'argc' && $key != 'argv' && (strtoupper($key) != $key || ''intval($key) == "$key")) {

if (is_string($var)) {

$array[$key] = stripslashes($var);

}

if (is_array($var)) {

$array[$key] = stripslashes_array($var);

}

}

}

return $array;

}

3、替换HTML尾标签

function lib_replace_end_tag($str)

{

if (empty($str)) return false;

$str = htmlspecialchars($str);

$str = str_replace( '/', "", $str);

$str = str_replace("\\", "", $str);

$str = str_replace(">", "", $str);

$str = str_replace("<", "", $str);

$str = str_replace("<SCRIPT>", "", $str);

$str = str_replace("</SCRIPT>", "", $str);

$str = str_replace("<script>", "", $str);

$str = str_replace("</script>", "", $str);

$str=str_replace("select","select",$str);

$str=str_replace("join","join",$str);

$str=str_replace("union","union",$str);

$str=str_replace("where","where",$str);

$str=str_replace("insert","insert",$str);

$str=str_replace("delete","delete",$str);

$str=str_replace("update","update",$str);

$str=str_replace("like","like",$str);

$str=str_replace("drop","drop",$str);

$str=str_replace("create","create",$str);

$str=str_replace("modify","modify",$str);

$str=str_replace("rename","rename",$str);

$str=str_replace("alter","alter",$str);

$str=str_replace("cas","cast",$str);

$str=str_replace("&","&",$str);

$str=str_replace(">",">",$str);

$str=str_replace("<","<",$str);

$str=str_replace(" ",chr(32),$str);

$str=str_replace(" ",chr(9),$str);

$str=str_replace(" ",chr(9),$str);

$str=str_replace("&",chr(34),$str);

$str=str_replace("'",chr(39),$str);

$str=str_replace("<br />",chr(13),$str);

$str=str_replace("''","'",$str);

$str=str_replace("css","'",$str);

$str=str_replace("CSS","'",$str);

return $str;

}

三、专业的事情交给专业的工具去做。

安装安全软件。例如,在服务器中安装“服务器安全狗”,可以设置防注入,防攻击的设置,只要设置好安全规则,就可以屏蔽大多数攻击入侵。

最近在写一个SSH的课程设计,引用了百度的在线编辑器:Ueditor,除了配置Ueditor以外,还有一个问题就是:

在将保存在数据库中带html标签的数据拿出来放到页面中时,还是带HTML标签的,浏览器没有识别;

如<p style="TEXT-ALIGN: center"><span style="BACKGROUND-COLOR: #ffff00">剩下的给对方水电费水电费水电费水电费</span></p>

朋友用JSP直接将数据放到浏览器中,浏览器就可以识别了,但是我用的是Struts标签,

Struts标签中有一个属性,Escape,如果不写这个属性的话,默认的为true,这样从数据库中读取的带有HTML标签的数据就会原封不动的放在页面中,浏览器是不会解析你数据中的HTML标签的;只要将escape改为false即可;

[html] view plain copy

<span style="font-size:18px;"><s:property value="articalTittle" escape="false"/></span>

如果你数据库的html标签完整出现的话,调用到页面上就能正常显示的。例如:表news

id

title

content

1

你好吗?

<div><table><tr><td>嗯,我很好</td></tr></table>

2

我是中国人

<div><table><tr><td>嗯,是的</td></tr></table

content字段中id为1的能正常显示的

id为2的就不能正常显示的。因为组后table标签少了>这个符号,就是这个意思。

这个要放入ckeditor才行。因为你从ckeditor插入数据库时,是作为 字符串插入所以查询出来的是字符串。直接放在jsp中是会显示为字符串的。使用标签<s:property value="message" escapeHtml="false"/>

如下参考:

1首先,在您的计算机桌面上创建一个新文件夹,然后在该文件夹中创建一个新的文本文档。

2然后用记事本双击打开文本文档,如下图所示,然后编写一个简单的HTML代码。

3点击“另存为”功能选项,显示默认的“另存为”代码为ANSI。

4我们将把编码和文件名更改回图中所示的图像并保存它。

5然后回到新创建的文件夹,找到一个额外的HTML文件。

6最后,使用浏览器打开HTML文件。结果如图所示。

以上就是关于有什么比较简单的方法 能防止html标签注入和数据库注入全部的内容,包括:有什么比较简单的方法 能防止html标签注入和数据库注入、如何将从数据库中读出的带有html标签的字符串,让标签起效,显示在前台页面、asp数据库里的html标签怎么能够在调用出来的时候正常显示啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10160115.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存