我需要防止导致网址漏洞的字符
我的示例网址http://localhost/add.aspx?id=4;req=4
请提供我需要阻止的字符列表。
我正在使用ASP.net网页。我从sql server数据库绑定信息。
我只想列出要远离黑客的字符,以便在网址中输入不需要的字符串
答案 0 :(得分:7)
根据您使用的技术,通常会有一个内置功能可以为您处理。
ASP.NET(VB)&经典ASP
myUrl = Server.UrlEncode(myUrl)
ASP.NET(C#)
myUrl = Server.UrlEncode(myUrl);
<强> PHP 强>
$myUrl = urlencode($myurl);
如果您只想删除不安全字符,则需要正则表达式。 RFC 1738定义哪些字符对网址不安全:
不安全:
字符对于a来说可能不安全 原因多少。空间
角色是不安全的,因为 重要的空间可能会消失 可能会引入微不足道的空间 当URL被转录或
时 排版或进行治疗 文字处理程序。该 字符“&lt;”和“&gt;”是不安全的 因为它们被用作
自由文本中的URL分隔符; 引号(“”“)用于表示 在某些系统中划分URL。该 字符“#”是不安全的,应该是 总是被编码,因为它被使用 在万维网和其他中 用于从中分隔URL的系统 可能的片段/锚标识符 跟着它。字符“%”是 不安全,因为它用于
其他角色的编码。其他 字符是不安全的,因为
网关和其他运输代理商 众所周知,有时会修改这样的 字符。这些字符是“{”, “}”,“|”,“\”,“^”,“〜”,“[”,“]”, 和“`”。
答案 1 :(得分:3)
我需要防止导致漏洞的字符
当然,正如答案所说,你需要来进行URL编码。但不 URL编码是否会导致漏洞?通常不直接;主要是它只是在输入意外字符时使应用程序中断。
如果我们谈论网络“漏洞”,那么今天最常见的是:
这些是为了减少严重性和增加共性。 (幸运的是,现在很少有网站作者愚蠢地将用户输入传递给system(),但是XSS和XSRF漏洞很普遍。)
这些漏洞中的每一个都要求您了解潜在问题并故意应对。没有神奇的“你需要阻止的字符串”列表,如果它对安全性玩起来天真,那么它将保护你的应用程序。那些是一些附加组件,它们在提交时会阻止字符串'&lt; script&gt;',但是他们给你的只是一种错误的安全感,因为它们只能捕获一些常见的情况,并且通常很容易编码。
当你真正想要它们时,他们也会停止提交这些字符串。例如,一些(愚蠢的)PHP作者拒绝所有传入的撇号作为抑制SQL注入的尝试;结果是你不能称之为“O'Reilly”。 D'哦。不要阻止;编码正确。
例如,为了防止SQL注入,请确保SQL-escape您正在进行查询的任何字符串(或使用参数化查询自动执行此操作);为了防止HTML注入,对输出到页面上的所有文本字符串进行HTML编码(或使用将自动执行此操作的模板/ MVC方案)。
该网址应该有问题吗?将两个查询参数与';'分开是有效的,而不是更常见的'&amp;',但许多常见的Web框架在默认情况下仍然不理解这种语法(包括Java Servlet和ASP.NET)。所以你必须使用'id = 4&amp; req = 4' - 或者,如果你真的希望它是一个带有字面分号的单个参数,'id = 4%3Breq%3D4'。
答案 2 :(得分:2)
答案 3 :(得分:-2)
我写了这个,为漂亮的网址,但它当然不完整
“””,“,”,·,,,*,@,,=,;,?。,/,+,&安培;,$,&LT;,&GT;,#,%,{ (,),},|,\,^,〜,[,], - , - , - ',,“
然后我翻译空格“”并重复“ - ”
的空格更好的方法是将其与reqular表达式结合起来