今天早些时候,有人问到在web应用程序中inputvalidation策略的问题。 在撰写本文的时候,最好的答案是在PHP使用htmlspecialchars和mysql_real_escape_string 。 我的问题是:这足够吗? 还有更多我们应该知道的吗? 这些function在哪里分解?
我有很多来自$_GET和$_POST的用户input…现在我总是写mysql_real_escape_string($_GET['var']) .. 我想知道你是否可以做一个函数来保护,逃避和清理$_GET / $_POST数组,所以你不必每次处理用户input等都要处理它。 我正在考虑一个函数,例如cleanMe($input) ,在它里面,它应该执行mysql_real_escape_string , htmlspecialchars , strip_tags , stripslashes (我认为这将全部使它变得干净和安全),然后返回$input 。 那么这可能吗? 制作一个适用于所有$_GET和$_POST的函数,所以你只能这样做: $_GET = cleanMe($_GET); $_POST = cleanMe($_POST); 所以在你的代码中,当你使用例如$_GET['blabla']或者$_POST['haha'] ,它们是安全的,剥离的等等? 试了一下自己: function cleanMe($input) { $input = mysql_real_escape_string($input); $input = htmlspecialchars($input, ENT_IGNORE, 'utf-8'); $input = strip_tags($input); $input = stripslashes($input); return $input; }
我configuration了PHP,以便魔术引号处于打开状态,并且注册全局variablesclosures。 我尽我所能总是调用htmlentities()来输出从用户input派生的任何东西。 我也偶尔在我的数据库中查找附加的xss中常用的东西,例如… <script 我还应该做些什么?我怎样才能确保我所要做的事情总是完成。
如何防止JSP / Servlet Web应用程序中的XSS攻击?
如何防止使用HTML和PHP的XSS(跨站点脚本)? 我在这个主题上看到了很多其他的post,但是我还没有find一篇清楚而简洁的文章来说明如何实际阻止XSS。
是否有一个catchall函数的地方,很好的消毒用户input的SQL注入和XSS攻击,同时仍然允许某些types的html标签?