将有趣的消息返回到不同的注入

时间:2016-02-07 12:21:10

标签: php

我正在开发一个Web应用程序。哪里有一个输入框来跟踪订单并且对所有人开放。如果有人试图注入易受攻击的脚本,我想返回有趣的消息。例如,如果有人尝试旧学校的技巧

' OR '1'='1

它可能会返回'似乎你是初学者!请继续学习并再试一次“。 我是否必须使用RegEx检查输入?还是有其他更好的方式?有人开发了这样的脚本吗?

2 个答案:

答案 0 :(得分:1)

哈哈很有意思。好吧,我可以帮你清理输入,但如果你真的想这样做。试试这个:

public function verifyMessageSubject($ps)
{
    if (!preg_match('%^[A-Za-z0-9"<>/,]{3,100}$%', stripcslashes(trim($ps))))
            return false;
    return true;
}

如果您想要清理输入,可以试试这个

public function sanitize($data)// CALL THIS FUNCTION BEFORE CALLING ANY OTHER FUNCTION
{
    $data = trim($data);
    $data = strip_tags($data);
    $data = stripcslashes($data);
    return $data;
}
public function isCrudFree($data)
{
    $flags = array("SELECT", "ALTER", "INSERT", "CREATE", "DROP", "TRUNCATE", "DELETE", "=", "GRANT");
    foreach ($flags as $key => $value) 
    {
        $x = stripos($data, $value);
        if ($x !== FALSE)  // find array elements in the given string
            return false;
        return true;
    }
}

有很多方法可以清理您的数据。如果你决定调用黑客,你将不得不谷歌很多,以确保你的输入安全。 (不是一个好主意)

答案 1 :(得分:0)

如果您正在使用Apache(可能但不能保证),您可以利用.htaccess重定向在网址,POST请求等中尝试恶意命令的用户

RewriteCond %{THE_REQUEST} ^.*(\\r|\\n).* [NC,OR]
RewriteCond %{HTTP_REFERER} ^(.*)(<|>|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
RewriteCond %{HTTP_COOKIE} ^.*(<|>|?|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
RewriteCond %{REQUEST_URI} ^/(,|;|:|<|>|?>|?<|/|\\\.\.\\).{0,9999}.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*({\s?:;};|\/bin\/bash|\/cgi-bin\/|\/dev\/tcp\/|\/dev\/udp\/).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*({\s?:;};|\/bin\/bash|\/cgi-bin\/|\/dev\/tcp\/|\/dev\/udp\/).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(;|<|>|?|?|\)|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|cast|set|declare|drop|update|md5|benchmark).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(localhost|loopback|127\.0\.0\.1).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(<|>|%27|%3C|%3E|%00).* [NC,OR]
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR]
RewriteCond %{QUERY_STRING} base64_decode.*\(.*\) [NC,OR]
RewriteCond %{QUERY_STRING} printf.*\(.*\) [NC,OR]

# configure `funny` to intercept the `ref` parameter as an example!
RewriteRule ^(.*)$ http://%{SERVER_NAME}/funny/?ref=$1 [L,R=301]